2010-01-19 1 views
1

Существует ли в классе JDialog способ предотвращения отображения дочернего окна (JDialog) более одного раза, когда кнопка из главного окна (JFrame), используемая для ее открытия, является несколько раз? Спасибо заранее!Предотвращение дублирования диалоговых окон в Java Swing

ответ

2

Да, и вам не нужно делать коробку модальной, чтобы сделать это (хотя сделать ее модальной будет самым простым способом).

Просто сделать что-то вроде следующего

В ваших delcarations членов:

private final MyDialog dialog = new MyDialog(); 

В коде:

private void showDialog() { 
    dialog.setVisible(true); 
    dialog.requestFocus(); // May be needed to bring window to front 
} 

Это гарантирует, что вы только экземпляр окна один раз. Просто нажмите showDialog() всякий раз, когда нажимается кнопка.

+0

Пит, пример кода всегда дает лучший ответ, нет? –

0

Вы можете сделать JDialog модальным, тогда родительское окно не будет реагировать, пока оно не будет закрыто.

Или вы можете инициализировать JDialog раньше и просто сделать его видимым при нажатии кнопки. Чтобы сделать его видимым дважды, он не будет отображаться дважды.

1

Другой способ, который я делал в прошлом с Swing, заключается в том, что при нажатии кнопки первая вещь, которую я делаю, - это отключить кнопку. Затем я использую наблюдаемый шаблон для просмотра дочернего окна и снова включаю кнопку, когда дочернее окно закрывается. Таким образом, если потребуется некоторое время, чтобы отобразить дочернее окно по какой-либо причине, пользователь не может нажимать на него несколько раз и беспорядок.

 Смежные вопросы

  • Нет связанных вопросов^_^