Ява свинг. Как ждать других Jframes - PullRequest
3 голосов
/ 28 ноября 2009

В JFrame, когда я нажимаю «войти», я открываю другой Jframe, который является окном входа.

Как заставить мой основной Jframe ждать завершения моего входа в систему Jframe, прежде чем делать что-либо еще?

Ответы [ 3 ]

5 голосов
/ 28 ноября 2009

Просто используйте модальное диалоговое окно вместо фрейма, чтобы вы ничего не могли сделать, пока он не будет закрыт

см. http://mindprod.com/jgloss/modal.html для объяснения и см. http://www.java2s.com/Tutorial/Java/0240__Swing/ASimpleModalDialog.htm для примера кода

Если вы настаиваете на использовании JFrame, вы можете использовать обходной путь, накрыв другой кадр стеклянным каркасом. Признаюсь, это не слишком хорошее решение.

2 голосов
/ 28 ноября 2009

Я согласен, что модальный диалог был бы лучшим вариантом здесь, но если бы я ответил на этот вопрос в его более общей форме, скажем:

Как заставить один JFrame ждать другого JFrame?

Я бы сказал, что проще всего добиться этого, зарегистрировав и запустив прослушиватели событий.

  • В вашем «дочернем» фрейме зарегистрируйте «основной» фрейм как прослушиватель событий.
  • В вашем "основном" кадре,
    • реализовать ваш выбор слушателя, например, ActionListener
    • в методе, вызываемом слушателем, например, actionPerformed, закодируйте логику, которая обрабатывает то, что происходит при каждом из действий, на которые он может реагировать в «дочернем» фрейме.

Можно легко реализовать это в любом количестве ситуаций, включая сценарий входа в систему, описанный в вопросе.

0 голосов
/ 25 января 2010

Используйте JModalFrame вместо JFrame.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...