#java #swing #windowlistener
#java #swing #windowlistener
Вопрос:
У меня есть родительский файл, JFrame
он содержит JButton
. функциональность этой кнопки заключается в открытии другого окна.
Я хочу ограничить фокус окна, это означает, что после закрытия фокус второго окна должен переместиться в первое окно (родительское). И фокус не должен переходить к первому окну, если открыто второе окно.
Ответ №1:
Вы должны сделать свое второе окно модальным. Тем не менее, вы, вероятно, захотите сделать это JDialog.
Комментарии:
1. 1 приложение должно иметь только один родительский JFrame, а затем использовать JDialog в качестве дочерних окон.
Ответ №2:
да, это возможно, но обходной путь для двух или более JFrames, но для полной функциональности требуется много кода,
стандартным был бы один JFrame, а другим TopLayoutContainers мог бы быть JDialog, тогда вы можете легко играть с parent и модальностями, toFront , setAlwaysOnTop
Ответ №3:
Как сказал синоку, вы можете использовать модальный. Однако, если вам нужно использовать JFrame, вы должны реализовать WindowListener
для нового JFrame
. В этой реализации для windowClosing()
метода вы можете сказать originalJFrame.requestFocus()
. Конечно, ваш конструктор WindowListener
также должен быть снабжен ссылкой на исходный фрейм.