Создание диалоговых окон в Java

Создание диалоговых окон в JavaКак вы наверное уже знаете, для использования предопределенных диалоговых окон применяется класс JOptionPane. Теперь мы опишем, как «вручную» создать собственное диалоговое окно.

На рис.1 показано типичное модальное диалоговое окно, содержащее сообщение. Подобное окно отображается на экране после того, как пользователь выбрал пункт меню About.

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

Точнее говоря, нужно сделать следующее:

  1. В конструкторе вашего диалогового окна вызовите конструктор суперкласса JDialog. Добавьте в диалоговое окно компоненты пользовательского интерфейса.
  2. Добавьте обработчики событий.
  3. Задайте размер диалогового окна.

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

Фрейм-владелец управляет местом отображения диалога. Вы можете указать null вместо владельца — тогда диалог будет принадлежать скрытому фрейму.

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

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

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

Начиная с Java SE 6, добавлены два дополнительных типа модальности. Документо-модальный диалог блокирует все окна, относящиеся к одному «документу», или, точнее говоря, все окна с тем же родительским корневым окном, что и у данного диалога.

Это решает проблему систем помощи. В более старых версиях пользователи не могли взаимодействовать с окнами справки, когда всплыли модальный диалог. Toolkit-модальный диалог блокирует все окна их одного и того же «toolkit»(набора инструментов).

Toolkit — это программа Java, запускающая несколько приложений, такая как механизм аплетов в браузере. Дополнительную информацию на эту тему можно найти по адресу http://www.oracle.com/technetwork/java/index.html

Создание диалоговых окон в JavaРис.1. Диалоговое окно About

Ниже приведен фрагмент программы, создающая диалоговое окно:

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

Для того чтобы отобразить диалоговое окно на экране, необходимо создать новый объект JDialog и вызвать метод setVisible():

Фактически в программе, рассматриваемой здесь в качестве примера, диалоговое окно создается только единожды, а затем мы используем его повторно каждый раз, когда пользователь щелкает на кнопке About:

Когда пользователь щелкает на кнопке ОК, диалоговое окно должно закрываться. Эта реакция определяется в обработчике событий, связанных с кнопкой ОК:

Когда пользователь закрывает окно диалога, щелкая на кнопке Close, оно исчезает с экрана. Как и в классе JFrame, программист может изменять эту реакцию с помощью метода setDefaultCloseOperation().

Программа, демонстрирующая использование диалогового окна About, приведена ниже: