首页 > 编程笔记 > Java笔记 阅读:17

Java Swing JOptionPane对话框用法详解(附带实例)

Java API 中的 javax.swing.JOptionPane 类是一个非常简便的小型对话框类,该类用于创建对话框的方法都是静态方法,无须创建对象即可弹出。在日常开发中经常使用该类弹出提示、确认用户需求、调试程序等。

JOptionPane 提供了 4 种创建对话框的方法,如下表所示:

表: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)
参数说明如下:
【实例】在自定义对话框中显示“你做好准备了吗?”,并添加两个 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 通知框效果

相关文章