JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件
有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI
一.GUI的概述
GUI全称叫做Graphical User Intergace(图形用户接口),用图形的方式,来显示计算机操作的界面,这样更加方便直观,与用户交互
说道交互,其实系统跟用户有两种交互,一种是GUI,一种叫做CLI,也就是命令行,全称叫做Command User Intergace,这个需要一些学习成本,倒是不怎么推荐,比如创建文件夹之类的,要是你用CLI那就有点麻烦了
回到JAVA,java中为GUI提供的对象都存在java.Awt和javax.Swing两个包中,这两个是什么意思呢?
- java.Awt:abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能,属于重量级控件
- javax.Swing:在Awt的基础上,建立的一套图形化界面系统。其中提供了更多的组件,而且完全由java实现,增强了移植性,属于轻量级控件
我们来看看大致的组件
二.GUI布局
我们来学习这些控件之前,我们要学习他的布局,这些组件应该按照什么样的样式排放,这就是布局,常见的布局管理器有以下这几种
-
FlowLayout(流式布局管理器)
-
从左往右的顺序排列
- Panel默认的布局管理器
-
BorderLayout(边界布局管理器)
-
东南西北中
- Frame默认的布局管理器
-
GridLayout(网格布局管理器)
-
规则的矩阵
-
CardLayout(卡片布局管理器)
-
选项卡
-
GridBagLayout(网格包布局管理器)
-
非规矩的矩阵
三.Frame
我们来玩一下这个布局
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 1package com.lgl.hello;
2
3import java.awt.Frame;
4
5public class Test {
6 public static void main(String[] args) {
7
8 Frame f = new Frame("GUI");
9 //设置宽高
10 f.setSize(300, 200);
11 //设置显示位置
12 f.setLocation(720, 560);
13 //显示
14 f.setVisible(true);
15 }
16
17}
18
19
运行的结果
紧接着,我们往里面放控件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 1package com.lgl.hello;
2
3import java.awt.Button;
4import java.awt.FlowLayout;
5import java.awt.Frame;
6
7public class Test {
8 public static void main(String[] args) {
9
10 //默认边界布局
11 Frame f = new Frame("GUI");
12 //设置布局管理器
13 f.setLayout(new FlowLayout());
14 //设置宽高
15 f.setSize(300, 200);
16 //设置显示位置
17 f.setLocation(720, 560);
18
19 //按钮
20 Button b = new Button("Button");
21 f.add(b);
22
23 //显示
24 f.setVisible(true);
25 }
26
27}
28
29
运行的结果
既然如此,我们就给他设置点击事件了
四.GUI事件监听机制
我们怎么去监听他的事件?我们先来看下流程图
- 1.事件源
- 2.事件
- 3.监听器
- 4.事件处理
我们就直接看代码了,我们先监听这个窗体右上角的关闭按钮
1
2
3
4
5
6
7
8
9 1 // 窗体监听
2 f.addWindowListener(new WindowAdapter() {
3 @Override
4 public void windowClosing(WindowEvent e) {
5 // 关闭窗口
6 System.exit(0);
7 }
8 });
9
五.Action事件
我们继续来看,我们先按传统的四位给写好布局
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 1package com.lgl.hello;
2
3import java.awt.Button;
4import java.awt.FlowLayout;
5import java.awt.Frame;
6import java.awt.event.WindowAdapter;
7import java.awt.event.WindowEvent;
8
9public class Test {
10
11 public static void main(String[] args) {
12
13 new Test1();
14 }
15}
16
17class Test1{
18
19 // 定义组件
20 private Frame f;
21 private Button b;
22
23 // 构造方法
24 public Test1() {
25 init();
26 }
27
28 // 初始化
29 private void init() {
30 //初始化坐标
31 f = new Frame("My GUI");
32 //设置坐标
33 f.setBounds(300, 100, 600, 500);
34 //设置布局
35 f.setLayout(new FlowLayout());
36 //初始化按钮
37 b = new Button("Button");
38 //添加到布局
39 f.add(b);
40 //显示之前加载一下
41 myEvent();
42 //显示
43 f.setVisible(true);
44 }
45
46 //监听器
47 private void myEvent() {
48 f.addWindowListener(new WindowAdapter() {
49 @Override
50 public void windowClosing(WindowEvent e) {
51 System.exit(0);
52 }
53 });
54
55 //添加按钮事件
56
57
58 }
59}
60
61
仔细看代码,我们现在才是添加按钮事件
1
2
3
4
5
6
7
8
9 1 // 添加按钮事件
2 b.addActionListener(new ActionListener() {
3
4 @Override
5 public void actionPerformed(ActionEvent e) {
6 System.out.println("点击事件");
7 }
8 });
9
这样按钮也就具备了点击事件
六.鼠标事件
什么都有事件,那这样我们来监听一下鼠标的事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14 1 // 鼠标事件
2 b.addMouseListener(new MouseAdapter() {
3 @Override
4 public void mouseEntered(MouseEvent e) {
5 System.out.println("鼠标进入了");
6 }
7
8 @Override
9 public void mouseExited(MouseEvent e) {
10 System.out.println("鼠标出去了");
11 }
12 });
13
14
十分的简单是吧,那相对的,还有一个键盘事件,提示框什么的,我们这个篇幅就到这里了,下篇文章我们再详细的介绍!