JFrames и JDialogs иногда открываются за родительскими окнами, но имеют фокус - PullRequest
4 голосов
/ 23 марта 2012

Мы разрабатываем довольно большое корпоративное Java-приложение с традиционный клиент Swing.

Время от времени мы сталкиваемся с проблемой, что случайные JDialogs и JFrames открываются и получают фокус, но скрываются за своими родительскими окнами.

К сожалению, это явление не воспроизводимо и случается иногда. До сих пор это было распознано на машинах с установленными Win7 и WinXP. Поскольку все разработчики используют операционные системы Windows, это не обязательно означает, что эта проблема специфична для Windows.

Понятия не имею, как решить проблему. Может быть, есть специалист по Swing, который может это исправить? (Мы все еще работаем с Java 6).

Ответы [ 3 ]

4 голосов
/ 23 марта 2012

У JFrames не должно быть «родителей», так как они предназначены для «самого родительского» окна приложения.Если у вас есть окно, которое должно быть «дочерним» и, следовательно, должно быть над другим окном, то это должно быть диалоговое окно, такое как JDialog или JOptionPane, и должно быть соответственно установлено его родительское окно.

2 голосов
/ 23 марта 2012

Однажды у меня возникла та же проблема: ошибка заключалась в том, что родитель JDialog / JFrame на самом деле не был установлен должным образом. Я установил его для родителя родителя, который вызвал проблему.

1 голос
/ 23 марта 2012

Попробуйте добавить FocusListener и прослушать полученное событие фокуса, где вы можете вызвать yourWindow.toFront ().setAllwaysOnTop () также может быть вам интересен.

...