学科分类
目录
Java基础

JDialog

JDialog是Swing的另外一个顶级容器,通常用来表示对话框窗口。JDialog对话框可分为两种:模态对话框和非模态对话框。所谓模态对话框是指用户需要等到处理完对话框后才能继续与其他窗口交互,而非模态对话框允许用户在处理对话框的同时与其他窗口交互。

对话框是模态或者非模态,可以在创建JDialog对象时为构造方法传入参数来设置,也可以在创建JDialog对象后调用它的setModal()方法来进行设置,JDialog常用的构造方法如表1所示。

表1 JDialog常用构造方法

方法声明 功能描述
JDialog(Frame owner) 构造方法,用来创建一个非模态的对话框,owner为对话框所有者(顶级窗口JFrame)
JDialog(Frame owner,String title) 构造方法,创建一个具有指定标题的非模态对话框
JDialog(Frame owner,boolean modal) 创建一个有指定模式的无标题对话框

表1中,列举了JDialog三个常用的构造方法,在这三个构造方法中都需要接收一个Frame类型的对象,表示对话框所有者。第三个构造方法中,参数modal用来指定JDialog窗口是模态还是非模态,如果modal值设置为true,对话框就是模态对话框,反之则是非模态对话框,如果不设置modal的值,其默认值为false,也就是是非模态对话框。

接下来通过一个案例来学习如何使用JDialog对话框,如文件1所示。

文件1 Example02.java

 1    import javax.swing.*;
 2    public class Example02 {
 3        private static void createAndShowGUI() {
 4            // 创建并设置JFrame容器窗口
 5            JFrame frame = new JFrame("JFrameTest");
 6            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 7            frame.setSize(350, 150);
 8            frame.setVisible(true);
 9            // 在JFrame容器窗口基础上创建并设置JDialog容器窗口
 10            JDialog dialog = new JDialog(frame, "JDialog对话框",true);
 11            dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
 12            dialog.setSize(200, 100);
 13            dialog.setVisible(true);
 14        }
 15        public static void main(String[] args) {
 16            // 使用SwingUtilities工具类调用createAndShowGUI()方法执行并显示GUI程序
 17            SwingUtilities.invokeLater(Example02::createAndShowGUI);
 18        }
 19    }

编运行结果如图1所示。

图1 运行结果

在文件1中,先后创建并设置了JFrame和JDialog两个容器对象,从文件代码可以看出两种顶级容器的创建方式基本相同,但从图1的结果显示看出,虽然JFrame和JDialog都可以创建顶级容器窗口,但JDialog创建的窗口右上角没有放大和缩小功能。另外,由于创建JDialog容器对象时,设置的模态参数modal为true,所以在操作时,必须先关闭JDialog对话框后才可以与JFrame窗口进行交互。

点击此处
隐藏目录