Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top