Java图形用户界面——GUI设计、Swing类和JFrame类创建图形界面窗体

 

目录

前言

GUI应用程序

创建GUI应用程序的步骤

GUI组件

GUI容器

Java GUI支持的开发包

Swing

Swing顶层容器

容器层

JFrame类(主窗口框架)

创建窗体

窗口的设置

窗口关闭事件

最后


前言

图形用户界面简称GUI,通过GUI用户可以更好地与计算机进行交互。从JDK1.2版本后Java就引入了javax.swing,实现了图形界面的跨平台。Swing工具包提供了一系列丰富的GUI组件:表控件、列表控件、树控件、按钮和标签等,用来构造图形界面的应用程序,大大增加了程序的可交互性。JFrame类是最重要的顶层容器,是带有标题、边界、窗口状态调节按钮,放置其他Swing组件的顶层容器,它是构建GUI的主窗口。好了,我们开始学习Java图形用户界面——GUI设计、Swing类和JFrame类创建图形界面窗体。

GUI应用程序

创建GUI应用程序的步骤

  1. 创建图形界面中所要用到的组件,进行合理布局;
  2. 定义界面上的组件对用户交互事件的响应和对事件的处理。

GUI组件

Java图形用户界面最基本的组成部分,是以图形化的方法显示在屏幕上并能够与用户进行交互的对象,如按钮、标签、文本框等。

注意:组件不能独立地显示,必须将其放在一定的容器中。

GUI容器

是一种能够容纳其他组件或容器的组件。Java容器可以分为两类:顶层容器组件普通容器组件

顶层容器组件:

  • 可以独立浮动于屏幕上;
  • 每个Java的GUI程序都必须至少包含一个顶层容器组件;
  • 能够作为顶层容器组件的有:JFrame(作为GUI应用程序的主窗口,带有标题、最小化、最大化及关闭按钮)、JApplet(可以实现小程序的显示区域)、JWindow。

普通容器组件:也叫中间层容器,可以作为容纳其他组件的容器,但是不能独立存在,如JPanel(面板)、JScrollPane(滚动面板)。

Java GUI支持的开发包

AWT开发包

  • 是Java最早的用于编写图形用户界面应用程序的开发包;
  • 包含有基本组件类、布局管理类、容器类、基本图形类及事件处理类(或接口);
  • 存放在java.awt包中。

Swing开发包

  • 是为了解决AWT组件存在的问题而新开发的包,它是以AWT为基础的,Swing并没有取代AWT;
  • 几乎所有AWT组件对应有功能更强的Swing组件,存放在javax.swing包中;
  • AWT和Swing的组件类功能相似,Swing的类名称开头多了一个“J”,例如:JButton、JLabel。

注意:Swing开发包并没有取代AWT开发包。

Swing

Swing是一个用于开发Java应用程序用户界面的开发工具包,它以抽象窗口工具包(AWT)为基础,使跨平台应用程序可以使用任何可插拔的外观风格。

Swing特点有:包含丰富的组件、程序外观支持、可数据传递、易访问性API、部署支持灵活。

Swing顶层容器

Swing提供了3个顶层容器类:JFrame、JDialog和JApplet。

使用顶层容器类时,要注意:

  • 要在屏幕上显示,每个GUI组件必须是一个“容器层级”的一部分;
  • 每个GUI组件只能属于一个容器;
  • 一个组件已经在一个容器当中,而又试图将它添加到另一个容器中去,那么应先从第一个容器中移除该组件,然后添加到第二个容器中去;
  • 各类可视化组件不直接放到顶层容器中,而是放在顶层容器的内容面板中;
  • 可以选择添加一个菜单栏到顶层容器中,必须位于内容面板之外。

Swing中还有一个名为JInetrnalFrame的内部窗体,它模仿JFrame,但实际上内部窗体并不是真正的顶层容器。

容器层

每一个使用Swing组件的程序都至少有一个顶层容器。这个顶层容器是容器层级的根,而容器层级包含所有出现在顶层容器中的Swing组件。

1232131

基于Swing的GUI应用程序,至少要有一个带有JFrame作为其根的容器层级。

JFrame类(主窗口框架)

创建窗体

构造方法:

  • JFrame():创建一个无标题的框架;
  • JFrame(String):创建一个标题为Ttitle的框架。

方法:

  • setVisible(true):有上述构造方法创建的框架窗口都是不可见的,必须调用setVisible(true)方法使其可见;
  • setSize(宽,高):设置框架的尺寸,单位为像素;
  • pack():使框架的大小正好显示出所有组件;
  • setBackground(Color c):以参数c设置窗口的背景颜色;
  • setForeground(Color c):以参数c设置窗口的前背景颜色。

注意:要设置窗口背景色,必须先调用getContentPane()方法,例如:Container c=this.getContentPane();获得内容面板,在调用setBackground(Color c)方法。

例如:

import java.awt.*;                //添加java.awt开发包
import javax.swing.JFrame;        //添加java.swing.JFrame类
public class myfirst {
	public static void main(String[] args) {
		JFrame frame=new JFrame("这是我的第一个窗体");	//创建JFrame实例
		Container c=frame.getContentPane();			//调用getContentPane方法
		c.setBackground(Color.BLUE);				//调用setBackground方法将窗口背景颜色改为蓝色
		frame.setVisible(true);				//使创建的窗口可见
		frame.setSize(400,300);				//设置窗口宽为400像素,高为300像素
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//设置窗口关闭时,退出程序
      //frame.pack();              //使用框架的大小正好显示出所有组件
	}
}

运行结果为:

大大是的213

窗口的设置

默认情况下,窗口设置有本地窗口系统提供,不过,可以请求程序外观(look-and-feel)为窗体提供设置;如果希望窗口显示自定义图标并带有指定程序外观提供的窗口设置,那么需要在程序中添加如下代码:

JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame=new JFrame("新的窗口");
frame.setIconImage(new ImageIcon(imgURL).getImage());

注意:

  • 一定要先调用JFrame类的setDefaultLookAndFeelDecorated()方法设置窗口,然后再创建新的窗体,新窗体才显示指定的窗口设置;
  • 要切回窗口系统设置,可以通过调用方法JFrame.setDefaultLookAndFeelDecorated(false)来切换。

窗口关闭事件

在默认情况下,用户关闭一个窗体时,窗体只是被隐藏了,并没有关闭程序。我们可以注册一个窗口监听器来处理窗口关闭事件,或者使用setDefaultCloseOperation()方法指定默认的关闭行为。

注意,setDefaultCloseOperation()方法的参数必须是下面常量值中的一个:

  • DO_NOTHING_ON_CLOSE:当用户关闭窗口时,什么也不做;
  • HIDE_ON_CLOSE:当用户关闭窗口时,隐藏窗口;
  • DISPOSE_ON_CLOSE:当用户关闭窗口时,隐藏并释放窗口所占用的资源;
  • EXIT_ON_CLOSE:使用System.exit(0)退出应用程序,如果是用于小应用程序Applet的话,会抛出一个SecurityException异常。

最后

好了,有关Java图形用户界面——GUI设计、Swing类和JFrame类创建图形界面窗体学到这里了,谢谢观看!!!

我们下篇文章再见!!!

成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
非常感谢您的提问!下面是一个简单的Java程序,实现了一个“教师信息维护的图形用户界面”。 ```java import javax.swing.*; import java.awt.*; public class TeacherInfoUI extends JFrame { private JRadioButton maleButton; private JRadioButton femaleButton; private JButton addButton; private JButton deleteButton; public TeacherInfoUI() { // 设置窗体位置和大小 setBounds(300, 50, 380, 220); // 设置布局方式 setLayout(new FlowLayout()); // 创建性别面板 JPanel genderPanel = createGenderPanel(); add(genderPanel); // 创建操作面板 JPanel operationPanel = createOperationPanel(); add(operationPanel); // 设置窗体可见 setVisible(true); } private JPanel createGenderPanel() { JPanel genderPanel = new JPanel(); // 创建性别单选按钮和标签 maleButton = new JRadioButton("男", true); femaleButton = new JRadioButton("女", false); JLabel genderLabel = new JLabel("性别:"); // 将单选按钮和标签添加到面板中 genderPanel.add(genderLabel); genderPanel.add(maleButton); genderPanel.add(femaleButton); // 设置单选按钮为一组,实现互斥效果 ButtonGroup genderGroup = new ButtonGroup(); genderGroup.add(maleButton); genderGroup.add(femaleButton); return genderPanel; } private JPanel createOperationPanel() { JPanel operationPanel = new JPanel(); // 创建添加和删除按钮 addButton = new JButton("添加"); deleteButton = new JButton("删除"); // 将按钮添加到面板中 operationPanel.add(addButton); operationPanel.add(deleteButton); return operationPanel; } public static void main(String[] args) { TeacherInfoUI teacherInfoUI = new TeacherInfoUI(); } } ``` 在程序中,我们创建了一个TeacherInfoUI,继承自JFrame。在构造函数中,我们设置了窗体的位置和大小,并调用了两个私有方法来创建性别面板和操作面板。在main方法中,我们创建了一个TeacherInfoUI对象,从而启动了程序。 运行程序后,您可以看到一个包含性别单选按钮和添加、删除按钮的GUI界面。您可以根据自己的需求来进一步完善程序。希望这个程序对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白巧克力LIN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值