JAVA基础再回首(二十七)——JAVA中的图形化界面、GUI概述、简单的窗体创建、事件监听机制、动作事件、GUI布局、鼠标事件
版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://blog.youkuaiyun.com/m366917
这篇博客我们来说一下JAVA中的图形化界面,也就是GUI
GUI概述
英文全称是Graphical User Interface(图形用户接口)。用图形的方式,来显示计算机操作的界面,这样更方便更直观。
其实系统跟用户有两种交互,一种是GUI,一种叫做CLI。
CLI的英文全称是Command line User Interface (命令行用户接口)就是常见的Dos命令行操作。CLI需要我们记忆一些常用的命令,操作不直观。
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。我们来学习一下
- java.awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。
- javax.swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。
GUI继承体系图
从图中我们可以看到
Container常用子类:Window Panel(面板,不能单独存在。)
Window常用子类:Frame Dialog
下面我们就来写一个GUI的案例
简单的窗体创建
public class FrameDemo {
public static void main(String[] args) {
// 创建窗体对象
Frame f = new Frame();
// 设置窗体标题
f.setTitle("GUI");
// 设置窗体大小
f.setSize(400, 300); // 单位:像素
// 设置窗体位置
f.setLocation(400, 200);
// 调用一个方法,设置让窗体可见
f.setVisible(true);
}
}
运行结果
上面代码的设置窗体大小和位置方法我们可以用另外一个方法一句话搞定
public class FrameDemo {
public static void main(String[] args) {
// 创建对象
Frame f = new Frame("GUI");
// 一个方法搞定setBounds(x, y, width, height);
f.setBounds(400, 200, 400, 300);
f.setVisible(true);
}
}
我们运行了程序后,发现窗口关不掉,只能关闭服务,窗口才能关闭。那么我们怎么实现点击关闭按钮关闭窗口呢,这就牵扯到了事件监听机制?下面我们就来学习
事件监听机制
- 事件源
- 事件
- 事件处理
事件监听器
一个事件监听机制是由上面四个方面组成,下面我们来看事件监听机制流程图
那么我们要关闭窗口的话,就要对窗体事件进行处理并监听
// 让窗体关闭
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
动作事件
我们再来看按钮点击事件,首先我们要给窗体中添加一个按钮,然后再去实现他的点击事件
public class FrameDemo {
public static void main(String[] args) {
// 创建窗体对象
Frame f = new Frame("添加按钮点击事件");
// 设置属性
f.setBounds(400, 200, 400, 300);
// 设置布局为流式布局
f.setLayout(new FlowLayout());
// 创建按钮对象
Button bu = new Button("我是按钮");
bu.setSize(20, 10);
// 把按钮添加到窗体
f.add(bu);
// 设置窗体可以关闭
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
bu.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("点我点我!!");
}
});
// 窗体显示
f.setVisible(true);
}
}
运行结果
![]()
我们每点一下按钮,控制台都会输出一句话。上面我们为窗体设置布局为流式布局,按钮才会在哪个位置,那么GUI布局还有那些呢?我们来看一下
GUI布局
- FlowLayout(流式布局管理器)
- 从左往右的顺序排列
- Panel默认的布局管理器
- BorderLayout(边界布局管理器)
- 东南西北中
- Frame默认的布局管理器
- GridLayout(网格布局管理器)
- 规则的矩阵
- CardLayout(卡片布局管理器)
- 选项卡
- GridBagLayout(网格包布局管理器)
- 非规矩的矩阵
鼠标事件
鼠标事件也很容易理解,就是当鼠标停留在按钮上就触发该事件,离开按钮后就触发另外一个事件,是不是很好玩,我们来玩一下
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
f.setBackground(Color.RED);
}
});
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
f.setBackground(Color.WHITE);
}
});
运行程序后,在窗体中有一个按钮,当我们鼠标移动到按钮上面时,窗体的背景颜色会变成红色,离开时会变成白色,你可以自己试试,很好玩。感觉和在Android 中的代码有点相似
我们来看运行截图
![]()
![]()
截图看不见鼠标,但是效果还是没得说
好了,关于GUI图形化界面,我们就学习这么多,现在在开发中它不是我们掌握的重点,我们还是要了解一下的,当然他也有更加复杂的代码逻辑,如果想深入学习GUI,可以上网查询一下资料。就说这么多了。
欢迎有兴趣的同学加我朋友的QQ群:点击直接加群555974449 请备注:java基础再回首我们一起来玩吧