On Mon, 14 Apr 2025 14:36:26 GMT, Alexey Ivanov <[email protected]> wrote:
>> This test was designed to manually verify that clicking on the JComboBox
>> when the frame containing it is about to close does not cause an
>> IllegalStateException.
>>
>> The test allowed the tester extra time to click on the JComboBox when
>> closing the frame by adding a Thread.sleep() in the close button handler.
>>
>> In this test, a JComboBox is displayed with a Close button at the bottom.
>> The tester should click the Close button, then try to click the JComboBox
>> arrow button to display the popup.
>>
>> In the automated test, we save the JComboBox location size before closing
>> the frame. We then use this information to click on the JComboBox right
>> before the frame is closed.
>
> test/jdk/javax/swing/JComboBox/ComboPopupBug.java line 80:
>
>> 78: }
>> 79: catch (Exception e) {
>> 80: throw new RuntimeException(e);
>
> Swing is not thread-safe, you should get the location and size on EDT too.
> Suggestion:
>
> try {
> SwingUtilities.invokeAndWait(() ->{
> comboBoxLocation = comboBox.getLocationOnScreen();
> comboBoxSize = comboBox.getSize();
>
> closeButton.doClick();
> });
> }
> catch (Exception e) {
> throw new RuntimeException(e);
By the way, since the `closeButton` is clicked on EDT, as it should, you can
put both `comboBoxLocation` and `comboBoxSize` into `clickComboBox()` where
they're used.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24624#discussion_r2042673896