Java диалоговое окно да нет

Java Swing — пример JOptionPane showConfirmDialog

Это обзор метода showConfirmDialog() класса JOptionPane . Этот метод — быстрый и простой способ получить данные от пользователя, задав подтверждающий вопрос, например да / нет / отмена. showConfirmDialog() можно вызвать с помощью следующих комбинаций параметров:

Component, Object Component, Object, String, int Component, Object, String, int, int Component, Object, String, int, int, Icon
  1. Компонент — первый параметр — это компонент, который определяет фрейм, в котором отображается диалог; если null, или если parentComponent не имеет фрейма, используется фрейм по умолчанию.
  2. Объект — вторым параметром может быть любой объект. (In some older versions of Java you might get a compiler error when using primitive types directly)
  3. String — Третий параметр — это строка, помещенная в заголовок окна confirmDialog.
  4. int — int, следующий за строкой, — это OptionType . Различные OptionTypes для JOptionPane :
  • СООБЩЕНИЕ ОБ ОШИБКЕ
  • INFORMATION_MESSAGE
  • ПРЕДУПРЕЖДЕНИЕ
  • QUESTION_MESSAGE
  • PLAIN_MESSAGE

1. Компонент и объект

Самый простой способ получить ввод пользователя. showConfirmDialog() вызовет диалоговое окно с опциями «Да», «Нет» и «Отмена» и заголовком «Выберите вариант»:

package com.techfou.confirmDialog; import javax.swing.JOptionPane; public class ConfirmDialog1 < public static void main(String[] args) < int input = JOptionPane.showConfirmDialog(null, "Do you like bacon?"); // 0=yes, 1=no, 2=cancel System.out.println(input); >>

swing-comfirm-dialog-2a

2. Компонент, объект, строка и интервал

Добавление дополнительной информации в диалоговое окно подтверждения. В этом примере мы можем выбрать заголовок диалога, а также optionType . DEFAULT_OPTION имеет только кнопку «ОК». Эта форма диалогового окна подтверждения эквивалентна простому showMessageDialog() , но дает нам возможность получать вводимые пользователем данные.

package com.techfou.confirmDialog; import javax.swing.JOptionPane; public class ConfirmDialog2a < public static void main(String[] args) < int input = JOptionPane.showConfirmDialog(null, "Click ok if you are ok", "Be ok!", JOptionPane.DEFAULT_OPTION); // 0=ok System.out.println(input); >>

swing-comfirm-dialog-2b

Еще один простой пример с использованием YES_NO_CANCEL_OPTION:

package com.example.confirmDialog; import javax.swing.JOptionPane; public class ConfirmDialog2b < public static void main(String[] args) < int input = JOptionPane.showConfirmDialog(null, "Do you want to proceed?", "Select an Option. ",JOptionPane.YES_NO_CANCEL_OPTION); // 0=yes, 1=no, 2=cancel System.out.println(input); >>

swing-comfirm-dialog-2c

3. Компонент, объект, строка, int и int

Дайте диалог подтверждения со значком ошибки:

package com.example.confirmDialog; import javax.swing.JOptionPane; public class ConfirmDialog3 < public static void main(String[] args) < int input = JOptionPane.showConfirmDialog(null, "Do you want to proceed?", "Select an Option. ", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE); // 0=yes, 1=no, 2=cancel System.out.println(input); >>

swing-comfirm-dialog-2d

4. Компонент, объект, строка, интервал, интервал и значок

Сделайте ваш диалог подтверждения «красивее». Пример с Icon , полученным из каталога:

package com.example.confirmDialog; import javax.swing.ImageIcon; import javax.swing.JOptionPane; public class ConfirmDialog4a < public static void main(String[] args) < ImageIcon icon = new ImageIcon("src/images/turtle64.png"); int input = JOptionPane.showConfirmDialog(null, "Do you like turtles?", "Be honest. ", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, icon); // 0=yes, 1=no, 2=cancel System.out.println(input); >>

swing-comfirm-dialog-2e

Пример с Component , установленным на frame :

package com.example.confirmDialog; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JOptionPane; import java.awt.Color; public class ConfirmDialogInFrame extends JFrame < public ConfirmDialogInFrame() < getContentPane().setBackground(Color.DARK_GRAY); setTitle("Confirm Dialog in Frame"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); setResizable(false); setSize(400, 300); getContentPane().setLayout(null); >public static void main(String[] args) < ImageIcon icon = new ImageIcon("src/images/turtle64.png"); int input = JOptionPane.showConfirmDialog(new ConfirmDialogInFrame(), "I appear as part of the frame!!", "Customized Dialog", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, icon); // 0=ok, 2=cancel System.out.println(input); >>

swing-comfirm-dialog-2f

5. Более сложный пример

В этом примере мы передаем JPanel в качестве параметра Object. JPanel настраивается, и к нему добавляется JLabel . Мы также манипулируем размером OptionPane с помощью вызова UIManager .

package com.example.messageDialog; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.UIManager; public class ConfirmDialogPanel < public static void main(String[] args) < ImageIcon icon = new ImageIcon("src/images/lock64.png"); JPanel panel = new JPanel(); panel.setBackground(new Color(102, 205, 170)); panel.setSize(new Dimension(200, 64)); panel.setLayout(null); JLabel label1 = new JLabel("This file requires administrator rights."); label1.setVerticalAlignment(SwingConstants.BOTTOM); label1.setBounds(0, 0, 200, 32); label1.setFont(new Font("Arial", Font.BOLD, 10)); label1.setHorizontalAlignment(SwingConstants.CENTER); panel.add(label1); JLabel label2 = new JLabel("Are you sure you want to continue?"); label2.setVerticalAlignment(SwingConstants.TOP); label2.setHorizontalAlignment(SwingConstants.CENTER); label2.setFont(new Font("Arial", Font.BOLD, 10)); label2.setBounds(0, 32, 200, 32); panel.add(label2); UIManager.put("OptionPane.minimumSize", new Dimension(300, 120)); int input = JOptionPane.showConfirmDialog(null, panel, "Admin Rights Confirmation", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, icon); // 0=yes, 1=no, 2=cancel System.out.println(input); >>

Источник

Диалоговые окна JOptionPane

Библиотека Swing включает богатый выбор стандартных диалоговых окон, существенно упрощающих и ускоряющих вывод простой информации типа сообщений о работе программы, ошибках и нестандартных ситуациях. Для вывода в графический интерфейс приложения разнообразной информации и выбора простых данных предназначен класс JOptionPane, работа с которым связана с вызовом одного из многочисленных статических методов, создающих и выводящих на экран модальное диалоговое окно стандартного вида. В диалоговых окнах JOptionPane можно выводить самую разнообразную информацию и, при необходимости, размещать в них дополнительные компоненты.

JOptionPane унаследован от базового класса JComponent библиотеки Swing, так что можно работать с ним напрямую, т.е. создавать экземпляры класса JOptionPane и настраивать их свойства. Использование стандартных диалоговых окон существенно упрощает разработку приложения и позволяет ускорить процесс освоения пользователем интерфейса.

Все стандартные диалоговые окна Swing имеют собственные UI-представители, отвечающие за интерфейс окна в используемом приложении. Это особенно важно для внешних видов окон, имитирующих известные платформы, пользователи которых не должны ощущать значительной разницы при переходе от «родных» приложений к Java-приложениям.

Класс JOptionPane

Интерфейс экземпляра класса JOptionPane имеет структуру, представленную на следующем рисунке. Иконка в интерфейсе может отсутствовать.

Основные диалоговые методы JOptionPane

Наименование метода Описание
showMessageDialog Диалоговое окно вывода сообщения
showConfirmDialog Диалоговое окно подтверждения, с включением кнопок типа yes/no/cancel
showInputDialog Диалоговое окно с выбором

Конструкторы окна сообщений showMessageDialog

// Простое диалоговое окно с заголовком «Message» public static void showMessageDialog(Component parent, Object message) throws HeadlessException // Диалоговое окно с заголовком и типом сообщения public static void showMessageDialog(Component parent, Object message, String title, int messageType) throws HeadlessException // Диалоговое окно с заголовком, типом сообщения и иконкой public static void showMessageDialog(Component parent, Object message, String title, int messageType, Icon icon) throws HeadlessException

Конструкторы окна подтверждения showConfirmDialog

// Простое диалоговое окно подтверждения с кнопками Yes, No, Cancel и // с заголовком «Select an Option» public static void showConfirmDialog(Component parent, Object message) throws HeadlessException // Окно подтверждения с заголовком и кнопками, определенными // опцией optionType public static void showConfirmDialog(Component parent, Object message, String title, int optionType) throws HeadlessException // Окно подтверждения с заголовком, кнопками, определенными // опцией optionType, и иконкой public static void showConfirmDialog(Component parent, Object message, String title, int optionType, Icon icon) throws HeadlessException

Конструкторы окна выбора showInputDialog

// Диалоговое окно с полем ввода public static void showInputDialog(Component parent, Object message) throws HeadlessException // Диалоговое окно с полем ввода, инициализируемое initialSelectionValue public static void showInputDialog(Component parent, Object message, Object initialSelectionValue) throws HeadlessException // Диалоговое окно с полем выбора из списка selectionValues public static void showInputDialog(Component parent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue) throws HeadlessException

parent — родительское окно.

message — отображаемый в окне текст сообщения. В большинстве случаев это строка, но может быть использован массив строк String[], компонент Component, иконка Icon, представленная меткой JLabel, объект Object, конвертируемый в строку методом toString().

title — заголовок окна.

messageType — тип диалогового окна :

  • INFORMATION_MESSAGE — стандартное диалоговое окно для вывода информации со значком соответствующего вида;
  • WARNING_MESSAGE — стандартное диалоговое окно для вывода предупреждающей информации со значком соответствующего вида;
  • QUESTION_MESSAGE — стандартное диалоговое окно для вывода информации. Как правило, не используется для информационных сообщений;
  • ERROR_MESSAGE — стандартное диалоговое окно для вывода информации об ошибке со значком соответствующего вида;
  • PLAIN_MESSAGE — стандартное диалоговое окно для вывода информации без значка.

optionType — опция определения кнопок управления :

selectionValues — список возможных значений. В диалоговом окне InputDialog список будет представлен в компоненте JComboBox или JList. Если selectionValues = null, то в окне будет определено поле JTextField, в которое пользователь может ввести любое значение.

initialSelectionValue — инициализируемое значение.

icon — отображаемая в диалоговом окне иконка.

Локализация кнопок JOptionPane

Кнопки управления, как правило, имеют заголовки «Yes», «No», «Cancel». Для локализации кнопок диалогового компонента JOptionPane можно использовать UIManager следующим образом :

UIManager.put("OptionPane.yesButtonText" , "Да" ); UIManager.put("OptionPane.noButtonText" , "Нет" ); UIManager.put("OptionPane.cancelButtonText", "Отмена"); UIManager.put("OptionPane.okButtonText" , "Готово");

Пример использования JOptionPane

Пример JOptionPaneTest.java включает использование всех типов диалоговых окон JOptionPane. В интерфейсе окна, представленном на следующем скриншоте, размещаются кнопки, по нажатию на которые формируются соответствующие диалоговые окна JOptionPane.

Листинг примера JOptionPane

// Пример использования диалоговых окон JOptionPane import javax.swing.*; import java.awt.event.*; public class JOptionPaneTest extends JFrame < private JPanel contents = null; private JButton btnMessage1 = null; private JButton btnMessage2 = null; private JButton btnMessage3 = null; private JButton btnConfirm1 = null; private JButton btnConfirm2 = null; private JButton btnConfirm3 = null; private JButton btnInput1 = null; private JButton btnInput2 = null; private JButton btnInput3 = null; private ImageIcon icon = null; private final String TITLE_message = "Окно сообщения"; private final String TITLE_confirm = "Окно подтверждения"; private String[] drink = ; public JOptionPaneTest() < super("Пример использования JOptionPane"); setDefaultCloseOperation(EXIT_ON_CLOSE); // Локализация кнопок UIManager.put("OptionPane.yesButtonText" , "Да" ); UIManager.put("OptionPane.noButtonText" , "Нет" ); UIManager.put("OptionPane.cancelButtonText", "Отмена"); contents = new JPanel(); // Иконка для отображения в окне сообщений icon = new ImageIcon("images/warning.png"); // Кнопка формирования окна по 2-м параметрам btnMessage1 = new JButton("MessageDialog 2"); // Кнопка формирования окна по 4-м параметрам btnMessage2 = new JButton("MessageDialog 4"); // Кнопка формирования окна по 5-и параметрам btnMessage3 = new JButton("MessageDialog 5"); // Кнопки вывода сообщений подтверждения btnConfirm1 = new JButton("ConfirmDialog 4+2"); btnConfirm2 = new JButton("ConfirmDialog 5"); btnConfirm3 = new JButton("ConfirmDialog 6"); btnInput1 = new JButton("InputDialog 2+3"); btnInput2 = new JButton("InputDialog 4"); btnInput3 = new JButton("InputDialog 7"); addMessageListeners(); addConfirmListeners(); addInputListeners (); // Размещение кнопок в интерфейсе contents.add(btnMessage1); contents.add(btnMessage2); contents.add(btnMessage3); contents.add(btnConfirm1); contents.add(btnConfirm2); contents.add(btnConfirm3); contents.add(btnInput1); contents.add(btnInput2); contents.add(btnInput3); setContentPane(contents); // Вывод окна на экран setSize(500, 140); setVisible(true); >>

В методах addMessageListeners(), addConfirmListeners(), addInputListeners() определяются слушатели, обрабатывающие нажатие соответствующих кнопок.

Окна вывода сообщений MessageDialog

Листинг процедуры создания слушателей, формирующие диалоговые окна вывода сообщений.

private void addMessageListeners() < btnMessage1.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < JOptionPane.showMessageDialog(JOptionPaneTest.this, "

Текст

в виде разметки HTML"); > >); btnMessage2.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < JOptionPane.showMessageDialog(JOptionPaneTest.this, new String[] , TITLE_message, JOptionPane.ERROR_MESSAGE); > >); btnMessage3.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < // Включение в интерфейс иконки JOptionPane.showMessageDialog(JOptionPaneTest.this, "Использование изображения в окне сообщений", TITLE_message, JOptionPane.INFORMATION_MESSAGE, icon); >>); >

1. Интерфейс окна вывода сообщений по нажатию на кнопку btnMessage1. Конструктор получает 2 параметра : родитель и текст сообщения. В заголовок подставляется значение «Message». Текст сообщения имеет HTML разметку.

2. Интерфейс окна вывода сообщений по нажатию на кнопку btnMessage2. Конструктор получает 4 параметра : родитель, текст сообщения в виде массива строк, строку заголовка окна и тип сообщения.

3. Интерфейс окна вывода сообщений по нажатию на кнопку btnMessage2. Конструктор получает 5 параметров : родитель, текст сообщения, строку заголовка окна, тип сообщения и иконку.

Диалоговые окна подтверждений ConfirmDialog

Листинг процедуры создания слушателей, формирующие диалоговые окна подтверждений.

private void addConfirmListeners() < btnConfirm1.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < // Окно подтверждения c 4-мя параметрами int result = JOptionPane.showConfirmDialog( JOptionPaneTest.this, "Вам это нужно?", TITLE_confirm, JOptionPane.YES_NO_CANCEL_OPTION); // Окна подтверждения c 2-мя параметрами if (result == JOptionPane.YES_OPTION) JOptionPane.showConfirmDialog(JOptionPaneTest.this, "Вы не отказываетесь?"); else if (result == JOptionPane.NO_OPTION) JOptionPane.showConfirmDialog(JOptionPaneTest.this, "Вы отказались?"); >>); btnConfirm2.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < JOptionPane.showConfirmDialog(JOptionPaneTest.this, "Вы не отказываетесь?", TITLE_confirm, JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); >>); btnConfirm3.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < JOptionPane.showConfirmDialog(JOptionPaneTest.this, "Вам нравится значок?", TITLE_confirm, JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, icon); >>); >

1. Интерфейс окна подтверждения по нажатию на кнопку btnConfirm1. Конструктор получает 4 параметра : родитель, текст сообщения, строка заголовка и опция кнопок управления

В зависимости от нажатой кнопки открываются следующее окно подтверждение (одно из окон на следующем скриншот), конструктор которого получает 2 параметра. Текст заголовка имеет значение по умолчанию «Select an Option».

2. Интерфейс окна подтверждения по нажатию на кнопку btnConfirm2. Конструктор получает 5 параметров : родитель, текст сообщения, строка заголовка, опция кнопок управления и тип сообщения.

3. Интерфейс окна подтверждения по нажатию на кнопку btnConfirm3. Конструктор получает 6 параметров : родитель, текст сообщения, строка заголовка, опция кнопок управления, тип сообщения и иконка.

Диалоговые окна выбора данных InputDialog

Листинг процедуры создания слушателей, формирующие диалоговые окна выбора

private void addInputListeners() < btnInput1.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < // Диалоговое окно ввода данных : родитель, HTML сообщение String result = JOptionPane.showInputDialog( JOptionPaneTest.this, "Добро пожаловать"); JOptionPane.showInputDialog(JOptionPaneTest.this, "Вы ответили", result); > >); btnInput2.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < // Диалоговое окно ввода данных : родитель, сообщение в виде // массива строк, тип диалогового окна (иконки) JOptionPane.showInputDialog(JOptionPaneTest.this, new String[] , "Авторизация", JOptionPane.WARNING_MESSAGE); > >); btnInput3.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent e) < // Диалоговое окно ввода данных Object result = JOptionPane.showInputDialog( JOptionPaneTest.this, "Выберите любимый напиток :", "Выбор напитка", JOptionPane.QUESTION_MESSAGE, icon, drink, drink[0]); // Диалоговое окно вывода сообщения JOptionPane.showMessageDialog(JOptionPaneTest.this, result); >>); >

1. Интерфейс окна ввода данных по нажатию на кнопку btnInput1 представлен на скриншоте слева. Конструктор получает 2 параметра : родитель и текст сообщения с разметкой HTML. После ввода значения и нажатия на одну из клавиш открывается окно, представленное на скриншоте справа.

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

3. Интерфейс окна ввода данных по нажатию на кнопку btnInput3 представлен на следующем скриншоте слева. Конструктор получает все возможные параметры : родитель, текстовое сообщение, строка заголовка, тип диалогового окна, иконка, массив строк и выделенное значение по умолчанию. В диалоговом окне возможные значения представлены в компоненте выпадающего списка. После выбора значения и нажатия на одну из клавиш открывается окно вывода сообщения, представленное на скриншоте справа.

Скачать примеры

Исходные коды примеров, рассмотренных на странице, можно скачать здесь (2.25 Кб).

Источник

Читайте также:  Html tabs как сделать
Оцените статью