Это озадачено, но, может быть, просто возможно, кто-то уже сталкивался с этой проблемой и может указать мне правильное направление.
У меня есть JDialog для отображения хода выполнения длительной задачи, которую я явно создал как модальную с определенным владельцем:
progressDialog = new JDialog( ((Dialog)windowParent), true );
...
progressDialog.setVisible( true );
Позже, когда задача будет выполнена, я снова закрою диалоговое окно:
protected void done() {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
progressDialog.setVisible( false );
}
} );
}
В очень редких случаях диалоговое окно а) не закрывается и б) не является по-настоящему модальным, то есть пользователь может взаимодействовать с окном, расположенным за (теоретическим) диалогом. Есть идеи, что может быть причиной этого? К сожалению, это происходит очень редко и до сих пор только в системах Linux. Может ли это быть ошибкой Swing или я что-то не так делаю?