Java Swing JOptionPane对话框用法详解(附带实例)
Java API 中的 javax.swing.JOptionPane 类是一个非常简便的小型对话框类,该类用于创建对话框的方法都是静态方法,无须创建对象即可弹出。在日常开发中经常使用该类弹出提示、确认用户需求、调试程序等。
JOptionPane 提供了 4 种创建对话框的方法,如下表所示:
下面分别介绍这 4 种对话框的外观样式和使用方法。
创建自定义对话框的方法如下:
【实例】在自定义对话框中显示“你做好准备了吗?”,并添加两个 JButton 按钮,分别为“是的”和“再想想”。

图 1 自定义对话框的效果
创建确认对话框的方法有以下几种重载形式:
1) 调出带有选项 Yes、No 和 Cancel 的对话框,标题为 Select an Option:
2) 调出一个由 optionType 参数确定其中选项数的对话框:
3) 调用一个由 optionType 参数确定其中选项数的对话框,messageType 参数确定要显示的图标:
4) 调出一个带有指定图标的对话框,其中的选项数由 optionType 参数确定:
【实例】弹出一个确认框,询问用户是否离开,提供“是”“否”“取消” 3 个按钮:

图 2 3个按钮的确认框
如果用户单击“是”按钮,那么变量 answer 获得的值为 0;如果用户单击“否”按钮,那么变量 answer 获得的值为 1;如果用户单击“取消”按钮,那么变量 answer 获得的值为 2。
如果只想弹出“是”和“否”两个按钮,可以使用 JOptionPane.YES_NO_OPTION 类型,该类型对话框效果如下图所示。

图 3 两个按钮的确认框
创建输入框的方法有以下几种重载形式:
1) 显示请求用户输入内容的问题消息对话框,它把 parentComponent 作为其父级:
2) 显示请求用户输入内容的问题消息对话框,它把 parentComponent 作为其父级:
3) 显示请求用户输入内容的对话框,它把 parentComponent 作为其父级,该对话框的标题为 title,消息类型为 messageType:
4) 提示用户在可以指定初始选择、可能选择及其他所有选项的模块化的对话框中输入内容:
5) 显示请求用户输入的问题消息对话框:
6) 显示请求用户输入的问题消息对话框,它带有已初始化为 initialSelectionValue 的输入值:
【实例】弹出一个输入框,让用户输入自己的姓名。

图 4 输入框效果
1) 调出标题为 Message 的信息消息对话框:
2) 调出对话框,它显示使用由 messageType 参数确定的默认图标的 message:
3) 调出一个显示信息的对话框,为其指定了所有参数:
【实例】弹出一个警告提示,告知用户已与服务器断开连接。

图 5 通知框效果
JOptionPane 提供了 4 种创建对话框的方法,如下表所示:
方法 | 描述 |
---|---|
showConfirmDialog() | 确认框,询问一个确认问题,如 yes/no/cancel |
showInputDialog() | 输入框,可以让用户向程序中输入某些值 |
showMessageDialog() | 通知框,告知用户某事已发生 |
showOptionDialog() | 自定义对话框,集合了上述 3 种对话框的全部功能 |
下面分别介绍这 4 种对话框的外观样式和使用方法。
JOptionPane自定义对话框
首先介绍一个自定义的对话框,这个对话框可以说是一块白板,开发者可以自行定义对话框中显示的元素。创建自定义对话框的方法如下:
public static int showOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue)参数说明如下:
- parentComponent:指明对话框在哪个窗体上显示,如果传入具体的窗体对象,对话框会在该窗体居中位置显示,如果传入 null,则在屏幕中间弹出对话框;
- message:提示的信息;
- title:对话框的标题;
- optionType:指定可用于对话框的选项的整数,即 DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION 或 OK_CANCEL_OPTION;
- messageType:指定消息种类的整数,主要用于确定来自可插入外观的图标,即 ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE 或 PLAIN_MESSAGE;
- icon:在对话框中显示的图标;
- options:指示用户可能选择的对象组成的数组。如果对象是组件,则可以正确呈现,非 String 对象使用其 toString 方法呈现;如果此参数为 null,则由外观确定选项;
- initialValue:表示对话框的默认选择的对象,只有在使用 options 时才有意义,可以为 null。
【实例】在自定义对话框中显示“你做好准备了吗?”,并添加两个 JButton 按钮,分别为“是的”和“再想想”。
import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JOptionPane; public class Demo { public static void main(String[] args) { Object o[] = { new JButton("是的"), new JButton("再想想") }; //按钮对象的 Object 数组 Icon icon = new ImageIcon("src/注意.png"); //获取图标对象 JOptionPane.showOptionDialog(null, "你做好准备了吗?", "注意了!", JOptionPane.DEFAULT_OPTION, Icon.o, null); } }运行效果如下图所示:

图 1 自定义对话框的效果
JOptionPane确认框
确认框已经封装好了一套外观样式,弹出后要求用户做选择操作,用户选择具体选项后,确认框可以返回用户的选择结果,结果以 int 方式返回。创建确认对话框的方法有以下几种重载形式:
1) 调出带有选项 Yes、No 和 Cancel 的对话框,标题为 Select an Option:
static int showConfirmDialog(Component parentComponent, Object message)
2) 调出一个由 optionType 参数确定其中选项数的对话框:
static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType)
3) 调用一个由 optionType 参数确定其中选项数的对话框,messageType 参数确定要显示的图标:
static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType)
4) 调出一个带有指定图标的对话框,其中的选项数由 optionType 参数确定:
static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon)
【实例】弹出一个确认框,询问用户是否离开,提供“是”“否”“取消” 3 个按钮:
import javax.swing.JOptionPane; public class Demo { public static void main(String[] args) { int answer = JOptionPane.showConfirmDialog(null, "确定离开吗?", "标题", JOptionPane.YES_NO_CANCEL_OPTION); } }此确认框的弹出效果如下图所示。

图 2 3个按钮的确认框
如果用户单击“是”按钮,那么变量 answer 获得的值为 0;如果用户单击“否”按钮,那么变量 answer 获得的值为 1;如果用户单击“取消”按钮,那么变量 answer 获得的值为 2。
如果只想弹出“是”和“否”两个按钮,可以使用 JOptionPane.YES_NO_OPTION 类型,该类型对话框效果如下图所示。

图 3 两个按钮的确认框
JOptionPane输入框
输入框已经封装好了一套外观样式,弹出后要求用户在文本框中输入文本,用户完成输入操作后,输入框可以返回用户输入的结果。创建输入框的方法有以下几种重载形式:
1) 显示请求用户输入内容的问题消息对话框,它把 parentComponent 作为其父级:
static String showInputDialog(Component parentComponent, Object message)
2) 显示请求用户输入内容的问题消息对话框,它把 parentComponent 作为其父级:
static String showInputDialog(Component parentComponent, Object message, Object initialSelectionValue)
3) 显示请求用户输入内容的对话框,它把 parentComponent 作为其父级,该对话框的标题为 title,消息类型为 messageType:
static String showInputDialog(Component parentComponent, Object message, String title, int messageType)
4) 提示用户在可以指定初始选择、可能选择及其他所有选项的模块化的对话框中输入内容:
static Object showInputDialog(Component parentComponent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue)
5) 显示请求用户输入的问题消息对话框:
static String showInputDialog(Object message)
6) 显示请求用户输入的问题消息对话框,它带有已初始化为 initialSelectionValue 的输入值:
static String showInputDialog(Object message, Object initialSelectionValue)
【实例】弹出一个输入框,让用户输入自己的姓名。
import javax.swing.JOptionPane; public class Demo { public static void main(String[] args) { String name = JOptionPane.showInputDialog(null, "请输入您的姓名"); } }此输入框弹出效果如下图所示,用户输入姓名后,单击“确定”按钮,变量 name 获得的值就是输入框中的文本值。如果用户单击“取消”按钮,那么变量 name 获得的值为 null。

图 4 输入框效果
JOptionPane通知框
通知框是最简单的一个对话框,仅弹出提示,不会返回任何值。创建通知框方法有以下几种重载形式:1) 调出标题为 Message 的信息消息对话框:
static void showMessageDialog(Component parentComponent, Object message)
2) 调出对话框,它显示使用由 messageType 参数确定的默认图标的 message:
static void showMessageDialog(Component parentComponent, Object message, String title, int messageType)
3) 调出一个显示信息的对话框,为其指定了所有参数:
static void showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon)
【实例】弹出一个警告提示,告知用户已与服务器断开连接。
import javax.swing.JOptionPane; public class Demo { public static void main(String[] args) { JOptionPane.showMessageDialog(null, "您与服务器断开了连接", "发生错误", JOptionPane.ERROR_MESSAGE); } }此通知框弹出效果如下图所示,用户单击“确定”按钮后通知框消失。

图 5 通知框效果
相关文章
- Java Swing.JFrame的用法(附带实例)
- Java Swing JDialog对话框的用法(附带实例)
- Java Swing FlowLayout布局管理器的用法(附带实例)
- Java Swing BorderLayout布局管理器的用法(附带实例)
- Java Swing JPanel和JScrollPane面板的用法(附带实例)
- Java Swing JLabel标签的用法(附带实例)
- Java Swing ImageIcon图标类的用法(附带实例)
- Java Swing JButton按钮的用法(附带实例)
- Java Swing JRadioButton单选按钮的用法(附带实例)
- Java Swing JTable表格的用法(附带实例)