跳到主要内容Java GUI 组件详解:对话框与 JOptionPane 使用 | 极客日志Javajava
Java GUI 组件详解:对话框与 JOptionPane 使用
介绍 Java Swing 中的对话框组件,包括模式和无模式对话框的区别。重点讲解 JOptionPane 类的常用静态方法,如 showMessageDialog、showConfirmDialog、showOptionDialog 和 showInputDialog,以及消息类型、选项类型和返回值处理。
神经兮兮9 浏览 组件详解
对话框(弹窗)组件
- 对话框:向用户显示信息或者获取用户提供的信息
- 分类:
- 模式对话框:在结束对它的处理之前,不允许用户与应用程序的其余窗口进行交互,主要用于在程序继续运行之前获取用户提供的信息。例如,当用户想要读取一个文件时,就会弹出一个模式文件对话框;用户必须给定一个文件名,然后程序才能够开始读操作;只有用户关闭这个模式对话框之后,应用才能够继续执行。
- 无模式对话框:允许用户同时在对话框和应用程序的其他部分输入信息。例如工具条。只要需要,工具条可以停靠在任何地方,而且用户可以根据需要同时与应用窗口和工具条进行交互。
标准对话框:JOptionPane
Swing 有一组现成的简单对话框,可以让用户提供一些信息。JOptionPane 有 4 个用于显示对话框的静态方法:
- showMessageDialog():显示一条消息并等待用户点击 OK
- showConfirmDialog():显示一条消息并等待用户确认(如 OK/Cancel)
- showOptionDialog():显示一条消息并获得用户在一组选项中的选择
- showInputDialog():显示一条消息并获得用户输入的一行文本
对话框有以下组件:
- 一个图标
- 一条消息
- 一个或多个选项按钮
- 输入对话框有一个用于接收用户输入的额外组件。一个文本域,用户可以输入任何的字符串,或是一个组合框,用户可以从中选择一项。
这些对话框的具体布局和为标准消息类型选择的图标都取决于可插接式观感。左侧的图标取决于下面 5 种消息类型:每个对话框类型都有一个方法,可以用来提供自己的图标,以替代原来的图标。
- ERROR_MESSAGE
- INFORMATION_MESSAGE
- WARNING_MESSAGE
- QUESTION_MESSAGE
- PLAIN_MESSAGE(该类型没有图标)
可以为每个对话框类型指定一条消息这里的消息既可以是字符串、图标、用户界面组件,也可以是其他类型的对象。可以如下显示消息对象:提供字符串消息是目前为止最常见的情况,而提供一个 Component 会带来更大的灵活性,这是因为可以让 paintComponent() 方法绘制你想要的任何内容。
- String:绘制字符串;
- Icon:显示图标;
- Component:显示组件;
- Object[]:显示数组中的所有对象,依次叠加
- 任何其它对象:调用 toString() 方法来显示结果字符串
对话框位于底部的按钮取决于对话框类型和选项类型
- showMessageDialog():只能看到一个标准的按钮:确认
- showInputDialog():只能看到一组标准按钮:确认/取消
- showOptionDialog():可以指定一组任意的选项需要提供一个对象数组作为选项,每个数组元素会如下显示:
- String:创建一个按钮,使用字符串作为标签
- Icon:创建一个按钮,使用图标作为标签
- Component:显示这个组件
- 其他类型的对象:应用 toString() 方法,然后创建一个按钮,用结果字符串作为标签。
- DEFAULT_OPTION(默认选项)
- YES_NO_OPTION(Yes/No 选项)
- YES_NO_CANCEL_OPTION(Yes/No/Cancel 选项)
- OK_CANCEL_OPTION(ok 选项)
showConfirmDialog():可以指定 optionType(选项类型)属性为四种选项类型之一:代码示例:
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
int selection = JOptionPane.showConfirmDialog(parent, "Message", "Title", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (selection == JOptionPane.OK_OPTION) {
}
JOptionPane 常用方法
- parent(父组件)参数:可以为 null
- message 参数:显示在对话框中的消息可以是字符串、图标、组件或者它们的一个数组
- messageType 参数:取值为 ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE 和 PLAIN_MESSAGE
- 返回值:返回用户选择的选项的索引值
- OK_OPTION 选项的索引值为 0
- YES_OPTION 选项的索引值为 0
- NO_OPTION 选项的索引值为 1
- CANCEL_OPTION 选项的索引值为 2
- CLOSED_OPTION 选项(用户关闭对话框)的索引值为 -1
- optionType 参数:取值为 DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION、OK_CANCEL_OPTION
- 其他参数同消息对话框
- 返回值:返回用户选择的选项的索引值
- 参数同消息对话框
- 返回值:返回用户输入的字符串;如果用户取消了对话框则返回 null
- 参数同消息对话框
显示一个输入对话框或者内部输入对话框(内部对话框完全显示在其父组件窗体内)
static Object showInputDialog(Component parent, Object message, String title, int messageType, Icon icon, Object[] values, Object default)
static String showInputDialog(Component parent, Object message, String title, int messageType)
static String showInputDialog(Component parent, Object message)
static String showInputDialog(Object message)
static String showInputDialog(Component parent, Object message, Object default)
static String showInputDialog(Object message, Object default)
static Object showInternalInputDialog(Component parent, Object message, String title, int messageType, Icon icon, Object[] values, Object default)
static String showInternalInputDialog(Component parent, Object message, String title, int messageType)
static String showInternalInputDialog(Component parent, Object message)
显示一个选项对话框或者内部选项对话框(内部对话框完全显示在其父组件窗体内)
static int showOptionDialog(Component parent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object default)
static int showInternalOptionDialog(Component parent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object default)
显示一个确认对话框或者内部确认对话框(内部对话框完全显示在其父组件窗体内)
static int showConfirmDialog(Component parent, Object message, String title, int optionType, int messageType, Icon icon)
static int showConfirmDialog(Component parent, Object message, String title, int optionType, int messageType)
static int showConfirmDialog(Component parent, Object message, String title, int optionType)
static int showConfirmDialog(Component parent, Object message)
static int showInternalConfirmDialog(Component parent, Object message, String title, int optionType, int messageType, Icon icon)
static int showInternalConfirmDialog(Component parent, Object message, String title, int optionType, int messageType)
static int showInternalConfirmDialog(Component parent, Object message, String title, int optionType)
static int showInternalConfirmDialog(Component parent, Object message)
显示一个消息对话框或者一个内部消息对话框(内部对话框完全显示在其父组件窗体内)
static void showMessageDialog(Component parent, Object message, String title, int messageType, Icon icon)
static void showMessageDialog(Component parent, Object message, String title, int messageType)
static void showMessageDialog(Component parent, Object message)
static void showInternalMessageDialog(Component parent, Object message, String title, int messageType, Icon icon)
static void showInternalMessageDialog(Component parent, Object message, String title, int messageType)
static void showInternalMessageDialog(Component parent, Object message)