Диалоговые окна вызываются методами showMessageDialog()
и showOptionDialog()
интерфейса IFrame
. Этот интерфейс реализуется контроллером экрана, поэтому данные методы можно вызывать напрямую в коде контроллера.
-
showMessageDialog()
предназначен для отображения сообщения. Метод принимает следующие параметры:-
title
- заголовок диалогового окна. -
message
- сообщение. В случае HTML-типа (см. ниже) в сообщении можно использовать теги HTML для форматирования. При использовании HTML обязательно экранируйте данных из БД во избежание code injection в веб-клиенте. В не-HTML сообщениях можно использовать символы\n
для переноса строки. -
messageType
- тип сообщения. Возможные типы:-
CONFIRMATION
,CONFIRMATION_HTML
- диалог подтверждения. -
WARNING
,WARNING_HTML
- диалог преупреждения.
Различие типов сообщений отражается только в пользовательском интерфейсе десктоп-приложений.
-
Пример вызова диалога:
showMessageDialog("Warning", "Something is wrong", MessageType.WARNING);
-
-
showOptionDialog()
предназначен для отображения сообщения и кнопок для выбора пользователем. Метод в дополнение к параметрам, описанным дляshowMessageDialog()
, принимает массив или список действий. Для каждого действия в диалоге создается кнопка, при нажатии на которую пользователем диалог закрывается и вызывается методactionPerform()
данного действия.В качестве кнопок со стандартными названиями и значками удобно использовать анонимные классы, унаследованные от
DialogAction
. Поддерживаются пять видов действий, определяемых перечислениемDialogAction.Type
:OK
,CANCEL
,YES
,NO
,CLOSE
. Названия соответствующих кнопок извлекаются из главного пакета локализованных сообщений.Пример вызова диалога с кнопками
и и с заголовком и сообщением, взятыми из пакета локализованных сообщений текущего экрана:showOptionDialog( getMessage("confirmCopy.title"), getMessage("confirmCopy.msg"), MessageType.CONFIRMATION, new Action[]{ new DialogAction(DialogAction.Type.YES) { public void actionPerform(Component component) { copySettings(); } }, new DialogAction(DialogAction.Type.NO) } );