swing.2窗体控件

组成图形用户界面的组件如按钮、标签、对话框等,不能独立使用,需要放在容器内。容器(Container)是Component的抽象类的一个子类,一个容器可以容纳多个组件,并使它们称为一个整体。容器可以用来简化和美化图形界面设计,以整体结构来布置界面。Swing中不仅有JFrame和JDialog这样的顶层容器,还有JPanel和JScrollPane非顶层容器,接下来分别介绍这两类容器。

12.2.1 JFrame

JFrame窗体是一个容器,它是一个独立拥有标题栏和尺寸重置图标的窗口组件,是Swing程序中各个组件的载体,可以将它看作是承载这些Swing组件的容器。可以通过继承JFrame类创建一个窗口,在这个窗口中添加组件,同时为组件设置事件,拥有最大化、最小化、关闭的按钮。

JFrame类常用的方法如表12.1所示。

  • JFrame类常用方法

常用方法

功能描述

public JFrame ()

创建一个没有标题的窗口

public JDialog(String title)

创建一个标题title的窗口

public void setLayout(LayoutManager lmg)

设置容器使用lmg页面布局设置

public void setDefaultCloseOperation(int operation)

设置单击窗口上关闭按钮时处理方式。

接下来演示JFrame类的具体使用,如例12-1所示。

例12-1  Demo1201.java

import java.awt.*;
import javax.swing.*;
public class Demo1201{
public static void main(String[] args) {
JFrame jFrame = new JFrame("JFrame容器窗口");   // 创建JFrame窗体     
setLayout(new FlowLayout()); // 设置布局
setSize(400, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);                         // 设置容器可见
}
}

程序的运行结果如图12.2所示。

swing.2窗体控件

图12.2中,运行程序弹出了JFrame窗口。案例Demo1201先创建了一个空白窗体,然后设置窗体布局和大小,通过调用setDefaultCloseOperation(int operation)方法来传入参数JFrame.EXIT_ON_CLOSE,该参数表示窗口点击窗口关闭按钮时退出程序,最后设置窗体可见。如果没有设置窗口的关闭方式,单击关闭按钮是不能真正关闭窗口的,即单击关闭按钮时窗口会消失,虽然窗口消失了,但是还在JVM中。

12.2.1 JDialog

对话框需要依赖于一个窗口,它会随着窗口的关闭而关闭,随着窗口的最小化而隐藏,随着窗口的还原而再次显示。 对话框容器分为模态对话框和非模态对话框两类。模态对话框是指用户需要等到对话框处理完毕后才能与其他窗口交互,而非模态对话框允许用户在使用对话框同时与其他窗口交互。JDialog是Swing组件中的对话框,它继承了AWT组件中的Dialog类,它的功能是从一个窗体中弹出另一个窗体。JDialog类常用的构造方法如表12.2所示。

  • JDialog类常用构造方法

构造方法

功能描述

public JDialog(Frame frame)

创建一个无标题的对话框

public JDialog(Frame frame,String title)

创建一个有标题的对话框

public JDialog(Frame frame,boolean model)

创建一个无标题且指定类型的对话框

表12.2中,列举了JDialog类常用的构造方法,接下来通过一个案例来演示如何使用JDialog对话框,如例12-2所示。

例12-2  Demo1202.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Demo1202 {
public static void main(String[] args) {
JFrame jFrame = new JFrame("JFrame容器窗口"); // 创建JFrame窗体
setLayout(new FlowLayout()); // 设置布局
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
setVisible(true);
JButton jButton1 = new JButton("调用JDialog模态对话框窗口");
add(jButton1); // 添加按钮
JButton jButton2 = new JButton("调用JDialog非模态对话框窗口");
add(jButton2);
setSize(400, 247);


final JLabel jLabel = new JLabel();
final JDialog jDialog = new JDialog(jFrame, "JDialog窗口");
setSize(200, 150);
setLocation(50, 60);
setLayout(new FlowLayout());


addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setModal(true); // 设置模态对话框模式
if (jDialog.getComponents().length == 1) {
add(jLabel);
}
setText("JDialog模态对话框窗口1");
setVisible(true);
}
});
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setModal(false);// 设置为非模态对话框模式
if (jDialog.getComponents().length == 1) {
add(jLabel);
}
setText("JDialog非模态对话框窗口2");
setVisible(true);
}
});
}
}

程序的运行结果如图12.3、12.4所示。

swing.2窗体控件

上一篇:GUI 之 JDialog弹窗


下一篇:JDialog