Автор оригинала: Marilena.
Это обзор метода showConfirmDialog() класса JOptionPane . Этот метод является быстрым и простым способом получить ввод данных пользователя, задавая подтверждающий вопрос, например да/нет/отмена. showConfirmDialog() может быть вызван с использованием следующих комбинаций параметров:
Component, Object Component, Object, String, int Component, Object, String, int, int Component, Object, String, int, int, Icon
- Компонент – Первый параметр – это компонент, который определяет кадр, в котором отображается диалоговое окно; если значение равно нулю, или если
ParentComponentне имеет фрейма, используется фрейм по умолчанию. - Объект – Вторым параметром может быть любой объект. (В некоторых более старых версиях Java вы можете получить ошибку компилятора при непосредственном использовании примитивных типов)
- Строка – Третий параметр – это строка, помещенная в качестве заголовка окна confirmDialog.
int – Значение int, следующее за строкой, является
типом параметра. ДругойТипы опцийдляJoptionпан, являются:- ПАРАМЕТР ПО УМОЛЧАНИЮ
- ДА_НО_ОПЦИЯ
- ДА_НО_САНКЦИЯ_ОПЦИЯ
- OK_CANCEL_ОПЦИЯ
int – Следующий int – это
Тип сообщения. РазличныеТипы сообщенийдляJOptionPane, являются:- СООБЩЕНИЕ ОБ ОШИБКЕ
- INFORMATION_MESSAGE ИНФОРМАЦИЯ
- WARNING_MESSAGE ПРЕДУПРЕЖДЕНИЕ
- ВОПРОС_СООБЩЕНИЕ
- ПРОСТОЕ СООБЩЕНИЕ
- Икона – Последним параметром является
Значок, который отображается внутри диалогового окна и переопределяет значение по умолчаниюТип сообщениязначок.
1. Компонент и объект
Самый простой способ получить пользовательский ввод. showConfirmDialog() вызовет диалоговое окно с параметрами “Да”, “Нет” и “Отмена” и заголовком “Выберите опцию”:
package com.mkyong.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. Компонент, объект, Строка и int
Добавление дополнительной информации в диалоговое окно подтверждения. В этом примере мы выбираем заголовок диалогового окна, а также в тип опции . Параметр DEFAULT_OPTION имеет только кнопку “ОК”. Эта форма диалога подтверждения эквивалентна простому showMessageDialog() , предоставляя нам возможность получать вводимые пользователем данные.
package com.mkyong.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:
package com.mkyong.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
Введите диалоговое окно подтверждения со значком ошибки:
package com.mkyong.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. Компонент, объект, Строка, int, int и значок
Сделайте свой диалог подтверждения “красивее”, например, с помощью значка , извлеченного из каталога:
package com.mkyong.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);
}
}
Выход:
Пример с Компонент установлен в рамку :
package com.mkyong.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 в качестве параметра объекта. Панель настроена и к ней добавлена Метка . Мы также манипулируем размером Joptionpane с помощью вызова UIManager .
package com.mkyong.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);
}
}
Выход:
Рекомендации
Оригинал: “https://mkyong.com/swing/java-swing-how-to-make-a-confirmation-dialog/”