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);
}
}
Выход:
