4:GUI

4.1 GUI概述

来,继续啊,下面呢我们来学习GUI相关的API。

首先呢,我们来说一下,什么是GUI:

怎么理解呢?我们把后面要做的案例拿来举例说明一下:

看这里:

1640158945337

这是用户登录的案例,在这个界面上,有显示文本的标签,显示输入内容的文本框以及按钮。

再来看一个:

1640158964252

聊天室的案例,在这个界面上,有显示聊天内容的文本域,显示输入内容的文本框以及操作的按钮。

给出这样的界面,我们自己就能够看明白,非常的方便直观,这就是使用GUI相关的API来实现的。

而Java为GUI提供的API都存在java.awt和javax.Swing两个包中,我们分别来看一下这两个包:

所以,我们做图形界面开发使用的是swing包下的类。

这里出现了一个名词:组件。那什么是组件呢?

比如说,在用户登录中,文本框和按钮等,都是能够表示图形的对象,所以它们都称为组件。

最后,我们来说一下,我们会用到的常用组件,

看这里:

1640159115023

组件:

我们先来看常用的基本组件:

接着,我们再来看容器组件:

看到这里,我要说一下,由于我们使用的都是swing包下的,所以将来使用的组件,都是以J开头的。

好了,GUI相关的基础知识我们就先讲到这里

4.2 常用组件

4.2.1 JFrame(初识窗体)

来,继续啊,下面我们来学习JFrame窗体类。

在学习JFrame之前,先说一下,在学习GUI相关的API的时候,我就不带着大家到帮助文档中查看了。

在资料中,我们会把要讲解的类的作用,构造方法,和成员方法给大家展示出来,简单的分析后,到IDEA中去实现。

首先,我们来看一下JFrame:

JFrame:

构造方法:

成员方法:

知道了JFrame的构造方法和成员方法后,我们到IDEA中去使用一下:

讲解完毕后,大家赶快动手练习一下吧。

4.2.2 JFrame(常用设置)

来,继续啊,下面呢,我们再来学习几个JFrame窗体的常用方法:

了解了这几个方法后,我们到IDEA中去使用一下:

讲解完毕后,大家赶快动手练习一下吧。

4.2.3 JButton(窗口中添加按钮)

来,继续啊,下面我们来学习JButton,它是按钮的实现。

JButton:

构造方法:

成员方法:

知道了JButton的构造方法和成员方法后,我们到IDEA中去使用一下:

演示完毕之后,回到资料再总结一下:

JButton:

构造方法:

成员方法:

和窗体相关操作:

讲解完毕后,大家赶快动手练习一下吧。

4.2.4 JLabel(显示文本和图像)

来,继续啊,下面呢,我们来学习JLable,它是用来做短文本字符串或图像的显示的。

JLable:

构造方法:

成员方法:

知道了JLabel的构造方法和成员方法后,我们到IDEA中去使用一下:

讲解完毕后,大家赶快动手练习一下吧。

注意:在实际开发中,大家不用担心每个组件的位置和大小。因为这些都是前端人员设计好的。

4.3 案例

来,继续啊,下面呢,我们通过几个案例,来使用一下GUI中的常用组件。目前呢,我们仅仅是把界面做出来,下一次课呢,我们就要把最终的功能给实现了。首先,我们来看第一个案例。

4.3.1 案例1(用户登录)

需求:如图所示,做出界面

提示:给出的数据就是按照组件位置和大小给出的

1640160198618

首先,我们来简单的分析一下:

分析:

① 2个JLabel

② 2个JTextField

③ 1个JButton

分析完毕后,我们到IDEA中去实现一下:

在讲解的过程中,引入了一个新的组件JPasswordField,用来表示密码框。

讲解完毕后,大家赶快动手练习一下吧。

4.3.2 案例2(聊天室)

需求:如图所示,做出界面

提示:给出的数据就是按照组件位置和大小给出的

1640160345308

首先,我们来简单的分析一下:

分析:

① 1个JTextArea

② 1个JTextField

③ 2个JButton

分析完毕后,我们到IDEA中去实现一下:

讲解完毕后,大家赶快动手练习一下吧。

4.3.3 案例3(猜数字)

需求:如图所示,做出界面

提示:给出的数据就是按照组件位置和大小给出的

1640160399176

首先,我们来简单的分析一下:

分析:

① 1个JLabel

② 1个JTextField

③ 1个JButton

分析完毕后,我们到IDEA中去实现一下:

讲解完毕后,大家赶快动手练习一下吧。

4.3.4 案例4(手机日期和时间显示)

需求:如图所示,做出界面

提示:给出的数据就是按照组件位置和大小给出的

参照图:

1640160482727

我们要实现的图:

1640160461955

首先,我们来简单的分析一下:

分析:

① 4个JLabel

分析完毕后,我们到IDEA中去实现一下:

讲解完毕后,大家赶快动手练习一下吧。

4.3.5 案例5(考勤查询)

需求:如图所示,做出界面

提示:给出的数据就是按照组件位置和大小给出的

1640160575426

首先,我们来简单的分析一下:

分析:

① 3个JLabel

② 2个JTextField

③ 1个JButton

分析完毕后,我们到IDEA中去实现一下:

讲解完毕后,大家赶快动手练习一下吧。

4.3.6 案例5(考勤查询之日历控件)

需求:用日历控件改进考勤查询的日期字符串填写

来,继续啊,下面我们来学习考勤查询之日历控件

首先,我们看一下需求:用日历控件改进考勤查询的日期字符串填写

什么意思呢?我们刚在做的考勤查询系统,是需要手动输入日期字符串的,而在实际开发中,我们一般会选择使用日历控件来实现,

也就是下面这个样子的,我们点击一下,就会出现日历控件,我们选择日期就可以了。

1640160765732

这个相信大家有见过。

知道了要做什么之后,下面我们来说一下,怎么做。

我们可以自己写这个日历控件,也可以使用别人写好的日历控件。鉴于目前所学知识有限,我们先使用别人提供的日历控件。

这里呢,我准备好了一个日历控件类(DateChooser.java),我们到IDEA中一起去看一下如何使用:

了解了如何使用日历控件后,我们把开始写的代码改进一下:

讲解完毕后,大家赶快动手练习一下吧。

4.4 事件监听机制

来,继续啊,目前呢,我们做好了几个GUI的界面,但是具体的功能,我们没法实现。因为要想实现功能,就必须要学习一下事件监听机制。

这里,我们一起来说一下事件监听机制的组成:

GUI中的事件比较多,这里呢,我们先告诉一下大家如何给按钮添加事件,能够把我们前面的案例给实现就可以了。至于其他事件,后面我们用到的时候再去学习。

1640161060785

了解了如何给按钮添加事件后,我们到IDEA中去体验一下:

讲解完毕后,大家赶快动手练习一下吧。