2014-09-16 7 views
0

У меня есть JFrame с логином (JPanel), который можно выбрать из меню. Меню также показывает параметры в зависимости от ролей пользователей. Когда пользователь впервые регистрируется в экземпляре JFrame, моя проблема возникает, когда я выбираю логин в строке меню и запускает новый JFrame, так как у меня, очевидно, открыто 2 JFrames, и я не могу найти способ скрыть или закрыть предыдущий JFrame из JPanel. Есть ли способ скрыть/удалить все открытые окна, прежде чем я создам новый JFrame или любое другое возможное решение? Спасибо заранее за ваше время!Закрытие JFrame из JPanel

+0

так, например, при входе в JFrame показывает, и все прошло правильно, Логин JFrame получить спрятался и главный JFrame показывает вверх? –

+0

Вход - JPanel, который открывается из меню на главном JFrame для изменения ролей. Как только вы входите в систему с использованием этого JPanel, появляется новый JFrame с различными параметрами в соответствии с разрешениями пользователей, но предыдущий JFrame все еще существует, и я не могу найти способ скрыть его из JPanel –

+0

, просто прочитав совет, который madprogrammer я же говорил. он лучший, и если у вас все еще есть проблема, дайте нам знать –

ответ

2

Начните с обзора The Use of Multiple JFrames, Good/Bad Practice?.

Вместо использования второго JFrame, используя JDialog, чтобы показать окно входа в систему. Модальное диалоговое окно блокирует вызывающего абонента, когда диалог становится видимым, позволяя коду продолжать работу после его закрытия. Это очень полезно для получения информации от пользователя ...

Например, используйте это, чтобы собрать учетные данные (и, возможно, аутентифицировать) пользователя и разрешить вызывающему абоненту извлекать результаты при закрытии диалогового окна.

Посмотрите How to Make Dialogs для получения более подробной информации

+0

Я помню, что было другое, что вы могли открывать окна в главных окнах? Я не помню этого? –

+0

Использование JDialog, где я могу ввести имя пользователя и пароль, а затем передать их в другой класс, звучит как хорошая идея. Думаю, что я могу сделать Myframe.this.setvisible (false); и JFrame Myframe = новый JFrame(); Я проверю, не работает ли это! –

+0

Я проверил код, и мое окно входа в систему уже является JDialog, а не JPanel, как я уже говорил. Извините за ошибку! Это модально, и он находится в отдельном классе из основного JFrame, поэтому я не могу найти способ закрыть этот JFrame, когда я создаю новый JFrame после ввода правильного имени пользователя и пароля. –