----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
GUI(图形用户界面)
概念:
GUI是Graphical User Interface的缩写,图形用户接口
CLI是Command line User Interface的缩写 ,命令行用户接口,就是常见的Dos命令行操作。需要记忆一些常用的命令,
操作不直观。如:创建文件夹,或者删除文件夹等
Awt和Swing:
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。
java.Awt:Abstract Window ToolKit (抽象窗口工具包),依赖于本地系统平台,如颜色样式显示。属重量级控件。
javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。
增强了移植性,跨平台,属轻量级控件。
继承关系:
Component:是GUI图形界面的组成单元。
|--Button:按钮
|--Label:标签
|--Checkbox:检查框
|--TextComponent:文本组件
|--TextArea:文本区
|--TextField:文本字段
|--Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其它组件或容器进来。
|--Window:窗口
|--Panel:镶嵌板
|--Frame:框架
|--Dialog:对话
|--FileDialog:文件对话框
布局管理:
FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。
BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。
GridLayout(网格布局管理器):规则的矩阵
GridBagLayout(网格包布局管理器):非规则的矩阵
CardLayout(卡片布局管理器):选项卡
建立一个窗体:
* 窗体中可以存放各种组件,所以窗体是容器Container。创建时我们使用的是它的子类
* Container的两个常用子类:Window和Panel。Window是窗体,Panel是面板用来布局,不可见,不能单独存在。
* Window也有两个常用子类,Frame和Dialog。Frame是我们常用的带有标题和边框的顶层窗口,Dialog是对话框。
* 所有AWT包中的类都会运行在AWT线程上
简单的窗体创建过程:
Frame f = new Frame(“my window”); //建立框架
f.setLayout(new FlowLayout()); //设置布局
f.setSize(500,400); //设置窗体大小
f.setLocation(300,200); //设置窗体出现在屏幕的位置
f.setVisible(true); //设置成可见
事件监听机制组成:
* 事件源:发生事件的组件。
* 事件对象(Event):用户对组件的一个操作。
* 监听器(封装了事件源对应的动作的对象):处理某个事件,需要在发生事件的组件上添加监听器,
也就是java.awt.event包中XxxListener接口的子类。
* 事件处理:监听器中的方法。监听器被添加在组件上之后,组件上发生了
对应事件就会执行指定方法。
事件监听机制流程:
外部动作将有监听器所监听的动作作于事件源上,事件源(组件)产生事件对象,事件对象传给监听器
监听引发事件的动作(事件处理方式),将监听器注册到事件源
常用事件分类:
窗体事件WindowEvent:窗体打开、关闭、正在关闭、激活、最小化等。
鼠标事件MouseEvent:鼠标按下、抬起、进入、移出等。
键盘事件KeyEvent:键盘按下、抬起等。
动作事件ActionEvent:在某一组件上发生了定义好的动作,如按钮上鼠标点击或按空格,菜单上鼠标点击或按回车。
如何处理事件:
* 确定事件源(容器或组件)
* 通过事件源对象的addXXXListener()方法将监听器注册到该事件源上,在监听器中定义事件处理方法
* 该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象,一般用匿名内部类表示。
* 在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
* 事件触发后会把事件打包成对象传递给该变量,自动执行事件处理方法
(其中包括事件源对象。通过getSource()或者,getComponent()获取。)
Adapter(适配器):
通常Listener接口中都是有多个抽象方法的,而我们使用的时候有可能不会全部需要,如果定义子类实现接口那么
就必须重写所有方法,比较麻烦。Java中为我们提供了一些抽象的实现类XxxAdapter,它实现了XxxListener,内部
对接口的所有抽象方法进行了空的实现,我们在定义监听器时只要继承XxxAdapter就相当于实现了XxxListener,需
要哪个方法就重写哪个,不需要的方法不用再重写。
菜单:
MenuComponent:菜单组件
|--MenuBar:菜单条
|--MenuItem:子菜单、菜单项
|--Menu:菜单
先创建菜单条,再创建菜单,每一个菜单中建立菜单项。
也可以菜单添加到菜单中,作为子菜单。
通过setMenuBar()方法,将菜单添加到Frame中。