JFrame
在Swing组件中,最常见的一个容器就是JFrame,它是一个独立存在的顶级容器(也叫窗口),不能放置在其他容器之中,JFrame支持通用窗口所有的基本功能,例如窗口最小化、设定窗口大小等。接下来通过一个案例来演示一下JFrame的使用效果,如文件1所示。
文件1 Example01.java
import javax.swing.*;public class Example01 { private static void createAndShowGUI() { // 创建并设置JFrame容器窗口 JFrame frame = new JFrame("JFrameTest"); // 设置关闭窗口时的默认操作 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗口尺寸 frame.setSize(250, 150); // 展示JFrame容器窗口 frame.setVisible(true); }public static void main(String[] args) { //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序 SwingUtilities.invokeLater(Example01::createAndShowGUI); }}
运行结果如图1所示。
文件1中,通过JFrame类创建了一个窗体对象,在创建窗体对象的同时指定了窗体对象的标题为“JFrameTest”,然后通过JFrame类的相关方法分别设置了窗体对象关闭时的操作、窗体尺寸大小以及窗体信息可见。另外,在main()方法中,使用了javax.swing包下中SwingUtilities(封装有一系列操作Swing的方法集合工具类)工具类的invokeLater()方法执行了GUI程序,该方法需要传入一个接口作为参数,示例中使用到了方法引用进行传参。
JDialog
JDialog是Swing的另外一个顶级容器,通常用来表示对话框窗口。JDialog对话框可分为两种:模态对话框和非模态对话框。所谓模态对话框是指用户需要等到处理完对话框后才能继续与其他窗口交互,而非模态对话框允许用户在处理对话框的同时与其他窗口交互。
对话框是模态或者非模态,可以在创建JDialog对象时为构造方法传入参数来设置,也可以在创建JDialog对象后调用它的setModal()方法来进行设置,JDialog常用的构造方法如表1所示。
表1 JDialog常用构造方法
表1中,列举了JDialog三个常用的构造方法,在这三个构造方法中都需要接收一个Frame类型的对象,表示对话框所有者。第三个构造方法中,参数modal用来指定JDialog窗口是模态还是非模态,如果modal值设置为true,对话框就是模态对话框,反之则是非模态对话框,如果不设置modal的值,其默认值为false,也就是是非模态对话框。
接下来通过一个案例来学习如何使用JDialog对话框,如文件1所示。
文件1 Example02.java
import javax.swing.*;public class Example02 { private static void createAndShowGUI() { // 创建并设置JFrame容器窗口 JFrame frame = new JFrame("JFrameTest") frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(350, 150); frame.setVisible(true) // 在JFrame容器窗口基础上创建并设置JDialog容器窗口 JDialog dialog = new JDialog(frame, "JDialog对话框",true); dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setSize(200, 100); dialog.setVisible(true); }public static void main(String[] args) { // 使用SwingUtilities工具类调用createAndShowGUI()方法执行并显示GUI程序 SwingUtilities.invokeLater(Example02::createAndShowGUI); }}
编运行结果如图1所示。
图1 运行结果
在文件1中,先后创建并设置了JFrame和JDialog两个容器对象,从文件代码可以看出两种顶级容器的创建方式基本相同,但从图1的结果显示看出,虽然JFrame和JDialog都可以创建顶级容器窗口,但JDialog创建的窗口右上角没有放大和缩小功能。
另外,由于创建JDialog容器对象时,设置的模态参数modal为true,所以在操作时,必须先关闭JDialog对话框后才可以与JFrame窗口进行交互。