Как ограничить фокус JFrame в Swing?

#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 также должен быть снабжен ссылкой на исходный фрейм.