创建图形用户界面程序的第一步是创建一个容器类以容纳其他组件,常见的窗口就是一种容器。容器本身也是一种组件,它的作用就是用来组织、管理和显示其他组件。

一、顶层容器概述

        顶层容器是进行图形编程的基础,一切图形化的东西都必须包括在顶层容器中。顶层容器是任何图形界面程序都要涉及的主窗口,是显示并承载组件的容器组件。

在 Swing 中有三种可以使用的顶层容器,分别是 JFrame、JDialog 和 JApplet。

  1. JFrame:用于框架窗口的类,此窗口带有边框、标题、关闭和最小化窗口的图标。带 GUI 的应用程序至少使用一个框架窗口。【重点】

  2. JDialog:用于对话框的类。【了解】

  3. JApplet:用于使用 Swing 组件的 Java Applet 类。【不涉及】

二、JFrame类概述

JFrame:一个窗口,通常包含有标题、图标、操作按钮(关闭、最小化、最大化),还可以为窗口添加菜单栏、工具栏等。一个进程中可以创建多个窗口,并可在适当时候进行显示、隐藏 或 销毁。

  • JFrame是一个顶层的框架类,好比一个窗户的框子。也是一个容器类。这个框子可以嵌入几个玻璃窗。

JFrame类中常用的方法

  • JFrame() 创建一个窗体对象(构造方法)

  • void setSize(int width,int height) 设置窗体大小

  • void setVisible(true/false) 显示或隐藏组件

  • void setTitle(String title)设置窗体的标题

  • void setDefaultCloseOperation(int operation)设置窗口关闭按钮点击后的默认操作

    • 参考值

      • JFrame.DO_NOTHING_ON_CLOSE 常量值:0,不执行任何操作

      • JFrame.HIDE_ON_CLOSE 常量值:1,隐藏窗口(不会结束进程)。再次调用setVisible(true)将再次显示。

      • JFrame.DISPOSE_ON_CLOSE 常量值:2,销毁窗口,如果所有可显示的窗口都被DISPOSE,则可能会自动结束进程。

      • JFrame.EXIT_ON_CLOSE 常量值:3,退出进程

  • void setLocationRelativeTo(null) 设置窗口居中显示

三、使用JFrame类创建一个窗体

3.1 主程序入口中直接创建窗体

package com.test;

import javax.swing.JFrame;

public class Test {
	public static void main(String[] args) {
		// 实例化一个JFrame窗体
		JFrame jFrame = new JFrame();
		jFrame.setTitle("标题");// 设置窗体标题
		jFrame.setSize(300, 300);// 设置窗体大小
		jFrame.setDefaultCloseOperation(3);// 设置窗窗体关闭模式
		jFrame.setLocationRelativeTo(null);// 设置窗体居中
		jFrame.setVisible(true);// 设置窗体可见
	}
}

【注意】直接将实现窗体的代码放置主程序入口中不便于后期扩展及维护,而使用自定义类实现窗口就可以解决这些问题。

3.2 自定义实现创建窗体

流程:

  1. 在Java项目指定的包中自定义一个类继承JFrame

  2. 在自定义类中编写该类的无参数构造函数

  3. 在构造函数内调用设置相关属性的方法

  4. 测试类中实例化自定义类的对象即可将窗体显示出来

package com.zking.ui;
import javax.swing.JFrame;
//1.在Java项目指定的包中自定义一个类继承JFrame
public class HelloWorld extends JFrame {
	// 2.在自定义类中编写该类的无参数构造函数
	public HelloWorld() {
		// 3.在构造函数内调用设置相关属性的方法
		this.setTitle("第一个JFrame窗体");// 设置窗体的标题
		this.setSize(300, 300);// 设置窗体的宽和高
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗体的默认关闭模式
		this.setLocationRelativeTo(null);// 设置窗体在屏幕上居中显示
		this.setVisible(true);// 设置窗体可见
	}
}
package com.zking.ui;
public class Test {
	public static void main(String[] args) {
		// 4.测试类中实例化自定义类的对象即可将窗体显示出来
		HelloWorld hw = new HelloWorld();
	}
}

效果图:

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐