Как отключить основной JFrame при открытии нового JFrame - PullRequest
14 голосов
/ 12 июня 2010

Пример. Теперь у меня есть основной фрейм, содержащий jtable, отображающий всю информацию о клиенте, и была кнопка создания, чтобы открыть новый JFrame, который позволяет пользователю создавать нового клиента. Я не хочу, чтобы пользователь мог открыть более одного фрейма создания. Любой компонент свинга или API может сделать это? или как можно отключить основной кадр? Что-то вроде JDialog.

Ответы [ 5 ]

19 голосов
/ 06 декабря 2011

Я думаю, вы должны использовать этот код для основного jframe при попытке открыть новый:

this.setEnabled(false);

11 голосов
/ 12 июня 2010

Я бы посоветовал вам сделать новый диалог клиента модальным JDialog, чтобы вы не позволяли вводить данные из других диалогов / фреймов в приложении, пока они видимы.Подробнее см. Учебник по модальности .

2 голосов
/ 17 апреля 2012

Извините за поздний ответ, но вы рассматривали шаблон проектирования Singleton?Он будет возвращать один и тот же экземпляр класса, когда вы захотите этот класс.Поэтому, если пользователь хочет, чтобы кадр вводил детали, будет открыт только один кадр (тот же экземпляр)

Это выглядит примерно так:

private static MySingleFrame instance = null; //global var

private MySingleFrame() { } //private constructor 
private static MySingleFrame getInstance()
{

if(instance == null)
{
instance = new MySingleFrame();
}

//returns the same instance everytime MySingleFrame.getInstance() is called
return instance; 


}
1 голос
/ 17 декабря 2016

Вы можете использовать:

 private void btn_NewFormActionPerformed(java.awt.event.ActionEvent evt) { 

             this.hide();
             new Frm_NewFormUI().setVisible(true);

 }
1 голос
/ 12 июня 2010

просто используйте firstFrame.setVisible(false) в первом кадре.Это сделает его скрытым.

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

JFrame currentFrame;

void showRequest(JFrame frame)
{
  currentFrame.setVisible(false);
  currentFrame = frame;
  currentFrame.setVisible(true);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...