Java Swing.JFrame的用法(附带实例)
Java 中开发 Swing 程序的流程,可以被简单地概括为首先通过继承 javax.swing.JFrame 类创建一个窗体,然后向这个窗体中添加组件,最后为添加的组件设置监听事件。
JFrame 类的常用构造方法包括以下两种形式:
例如,创建一个不可见、具有标题的窗体,关键代码如下:
在创建窗体后,先调用 getContentPane() 方法将窗体转换为容器,再调用 add() 方法或者 remove() 方法向容器中添加组件或者删除容器中的组件。
向容器中添加按钮,关键代码如下:
删除容器中的按钮,关键代码如下:
创建窗体后,要对窗体进行设置,如设置窗体的位置、大小、是否可见等。JFrame 类提供的相应方法可实现上述设置操作,具体如下:
Java 语言提供了多种窗体的关闭方式,常用的有 4 种,如下表所示:
【实例 1】创建 JFreamTest 类,在 JFreamTest 类中创建一个内容为“这是一个JFrame窗体”的标签后,把这个标签添加到窗体中。

图 1 窗体的展示效果
JFrame 类的常用构造方法包括以下两种形式:
- public JFrame(): 创建一个初始不可见、没有标题的窗体;
- public JFrame(String title): 创建一个不可见、具有标题的窗体。
例如,创建一个不可见、具有标题的窗体,关键代码如下:
JFrame jf = new JFrame("登录系统"); Container container = jf.getContentPane();
在创建窗体后,先调用 getContentPane() 方法将窗体转换为容器,再调用 add() 方法或者 remove() 方法向容器中添加组件或者删除容器中的组件。
向容器中添加按钮,关键代码如下:
JButton okBtn = new JButton("确定"); container.add(okBtn);
删除容器中的按钮,关键代码如下:
container.remove(okBtn);
创建窗体后,要对窗体进行设置,如设置窗体的位置、大小、是否可见等。JFrame 类提供的相应方法可实现上述设置操作,具体如下:
- setBounds(int x, int y, int width, int height): 设置窗体左上角在屏幕中的坐标为(x, y),窗体的宽度为 width,窗体的高度为 height;
- setLocation(int x, int y): 设置窗体左上角在屏幕中的坐标为 (x, y);
- setSize(int width, int height): 设置窗体的宽度为 width,高度为 height;
- setVisible(boolean b): 设置窗体是否可见。b 为 true 时表示可见,b 为 false 时表示不可见;
- setDefaultCloseOperation(int operation): 设置窗体的关闭方式,默认值为 DISPOSE_ON_CLOSE。
Java 语言提供了多种窗体的关闭方式,常用的有 4 种,如下表所示:
窗体关闭方式 | 实现功能 |
---|---|
DO NOTHING_ON_CLOSE | 关闭窗体时,不触发任何操作 |
DISPOSE_ON_CLOSE | 关闭窗体时,释放窗体资源,窗体会消失但程序不停止 |
HIDE_ON_CLOSE | 关闭窗体时,仅隐藏窗体,不释放资源 |
EXIT_ON_CLOSE | 关闭窗体时,释放窗体资源并关闭程序 |
【实例 1】创建 JFreamTest 类,在 JFreamTest 类中创建一个内容为“这是一个JFrame窗体”的标签后,把这个标签添加到窗体中。
import java.awt.*; import javax.swing.*; public class JFrameTest { public static void main(String args[]) { JFrame jf = new JFrame(); jf.setTitle("创建一个 JFrame 窗体"); Container container = jf.getContentPane(); JLabel jl = new JLabel("这是一个 JFrame 窗体"); jl.setHorizontalAlignment(SwingConstants.CENTER); container.add(jl); jf.setSize(300, 150); jf.setLocation(320, 240); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); jf.setVisible(true); } }运行结果如下图所示:

图 1 窗体的展示效果