这是对JOptionPane
类的showConfirmDialog()
方法的回顾。 这种方法是通过询问一个确认问题(例如yes / no / cancel)来获得用户输入的快速简便的方法。 可以使用以下参数组合来调用showConfirmDialog()
:
Component, Object
Component, Object, String, int
Component, Object, String, int, int
Component, Object, String, int, int, Icon
- Component –第一个参数是Component,它确定显示对话框的框架; 如果为null,或者
parentComponent
没有框架,则使用默认框架。 - 对象–第二个参数可以是任何对象。 (在某些旧版本的Java中,直接使用原始类型时,您可能会遇到编译器错误)
- 字符串–第三个参数是作为ConfirmDialog窗口的标题放置的字符串。
- int –字符串之后的int是
OptionType
。JOptionPane
的不同OptionTypes
是:- DEFAULT_OPTION
- YES_NO_OPTION
- YES_NO_CANCEL_OPTION
- OK_CANCEL_OPTION
- int –下一个int是
MessageType
。JOptionPane
的不同MessageTypes
是:- 错误信息
- INFORMATION_MESSAGE
- 警告信息
- QUESTION_MESSAGE
- PLAIN_MESSAGE
- Icon –最后一个参数是显示在对话框中的
Icon
,它将覆盖默认的MessageType
图标。
1.组件与对象
获取用户输入的最简单方法。 showConfirmDialog()
将弹出一个对话框,其中包含选项Yes,No和Cancel,标题为“ Select a Option”:
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.组件,对象,字符串和整数
在确认对话框中添加更多信息。 在此示例中,我们选择对话框的标题以及optionType
。 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.组件,对象,字符串,整数和整数
给您的确认对话框带有错误图标:
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.组件,对象,字符串,整数,整数和图标
将确认对话框设为“更漂亮”,并从目录中检索Icon
示例:
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);
}
}
输出:
Component
设置为frame
示例:
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
作为Object参数传递。 JPanel
是自定义的,并且添加了JLabel
。 我们还使用对UIManager
的调用来操纵OptionPane
的大小。
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/