Java Swing - пример JOptionPane showConfirmDialog
Это обзор методаshowConfirmDialog()
классаJOptionPane
. Этот метод - быстрый и простой способ получить данные от пользователя, задав подтверждающий вопрос, например да / нет / отмена. showConfirmDialog()
можно вызвать с помощью следующих комбинаций параметров:
Component, Object Component, Object, String, int Component, Object, String, int, int Component, Object, String, int, int, Icon
-
Компонент - первый параметр - это компонент, который определяет фрейм, в котором отображается диалог; если null, или если
parentComponent
не имеет фрейма, используется фрейм по умолчанию. -
Объект - вторым параметром может быть любой объект. (In some older versions of Java you might get a compiler error when using primitive types directly)
-
String - Третий параметр - это строка, помещенная в заголовок окна confirmDialog.
-
int - int, следующий за строкой, - это
OptionType
. РазличныеOptionTypes
дляJOptionPane
:-
DEFAULT_OPTION
-
YES_NO_OPTION
-
YES_NO_CANCEL_OPTION
-
OK_CANCEL_OPTION
-
-
int - Следующим int является
MessageType
. РазличныеMessageTypes
дляJOptionPane
:-
СООБЩЕНИЕ ОБ ОШИБКЕ
-
INFORMATION_MESSAGE
-
ПРЕДУПРЕЖДЕНИЕ
-
QUESTION_MESSAGE
-
PLAIN_MESSAGE
-
-
Значок - последний параметр - это
Icon
, который отображается внутри диалогового окна и заменяет значок по умолчаниюMessageType
.
1. Компонент и объект
Самый простой способ получить ввод пользователя. showConfirmDialog()
вызовет диалоговое окно с опциями «Да», «Нет» и «Отмена» и заголовком «Выберите вариант»:
ConfirmDialog1.java
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); } }
Выход:
2. Компонент, объект, строка и интервал
Добавление дополнительной информации в диалоговое окно подтверждения. В этом примере мы можем выбрать заголовок диалога, а такжеoptionType
. DEFAULT_OPTION
имеет только кнопку «ОК». Эта форма диалогового окна подтверждения эквивалентна простомуshowMessageDialog()
, но дает нам возможность получать вводимые пользователем данные.
ConfirmDialog2a.java
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); } }
Выход:
Еще один простой пример с использованием YES_NO_CANCEL_OPTION:
ConfirmDialog2b.java
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); } }
Выход:
3. Компонент, объект, строка, int и int
Дайте диалог подтверждения со значком ошибки:
ConfirmDialog3.java
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); } }
Выход:
4. Компонент, объект, строка, интервал, интервал и значок
Сделайте ваш диалог подтверждения «красивее». Пример сIcon
, полученным из каталога:
ConfirmDialog4a.java
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); } }
Выход:
Пример сComponent
, установленным наframe
:
ConfirmDialogInFrame.java
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); } }
Выход:
5. Более сложный пример
В этом примере мы передаемJPanel
в качестве параметра Object. JPanel
настраивается, и к нему добавляетсяJLabel
. Мы также манипулируем размеромOptionPane
с помощью вызоваUIManager
.
ConfirmDialogPanel.java
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); } }
Выход: