图形用户界面(GUI--Graphical User Interface)
抽象窗口工具集(AWT--Abstract Window Tookit)
相关软件包:
java.awt包:提供基本GUI组件、视觉控制和绘图工具API
java.awt.event包:提供Java GUI事件处理API。
·组件(Component)是图形用户界面的基本组成元素,如菜单、按钮、标签、文本等。
·组件不能独立地显示,必须将组件放在一定的容器中才可以显示出来。
·抽象类java.awt.Component是除了菜单相关组件之外素有Java AWT组件类的根父类,该类规定了GUI组件的基本特性。
·容器(Container)实际上市Component的子类,因此容器类对象本身也是一个组件,具有组件的所有性质,另外还具有容纳其他组件和容器的功能。
·容器类对象可使用方法add()添加组件。
两种主要的容器类型:
java.awt.Window:可自由停泊的顶级窗口
java.awt.Panel:可作为容器容纳其他组件,但不能独立存在,必须被添加到其他容器(如Frame)中
Frame对象显示的效果是一个可自由停泊的顶级“窗口”,带有标题和尺寸重置角标。
·Frame默认初始化为不可见的,可以调用Frame对象的setVisible(true)方法使它变为可见。
·它也可以使用add()方法包含其他组件。
组件定位:
·Java组件在容器中的定位由布局管理器决定。
·人工控制组件在容器中的定位,可取消布局管理器,然后使用Component类的以下方法:
setLocation()
setSize()
setBounds() //设定组件的位置和大小
布局管理器:
·容器对其中所包含组件的排列方式,包括组件的位置的大小设定,被称为容器的布局(Layout)。
·每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用对应的布局管理器。
·FlowLayout布局是Panel容器的默认布局管理器类型。
效果:
组件在容器中按照加入次序逐行进行定位,行内从左到右,一行排满后换行。
不改变组件原始尺寸。
组件间的对齐方式默认为居中对齐,也可在构造方法中设置不同的组件间距、行距及对齐方式。
·构造方法:public FlowLayout()
public FlowLayout(int align)
public FlowLayout(int align,int hgap,int vgap)
·BorderLayout布局是Frame容器的默认布局管理器。
效果:
将整个容器的布局划分为东西南北中五个区域,组件只能被添加到指定的区域。
如不指定组件的加入部位,则默认加入到Center区域。
每个区域只能加入一个组件,如加入多个组件的话,则先前加入的组件会被遗弃。
组件尺寸被强行控制,即与其所在区域的尺寸相同。
·构造方法:public BorderLayout()
public BorderLayout(int hgap,int vgap)
·北、南两个区域只能在水平方向收缩(宽度可调)
·东、西两个区域只能在垂直方向收缩(高度可调)
·中部区域可以两个方向可调
·GridLayout布局:网格布局
·将容器区域划分为规则的矩形网格,每个单元格区域大小相等,组件被添加到每个单元格中,按组件加入顺序先从左到右填满一行后换行,行间从上到下。
·GridLayout型布局的组件大小也被布局管理器强行控制,与单元格同等大小,当容器尺寸发生改变时,组件的相对位置保持不变,但大小自动调整。
·构造方法:public GridLayout(int rows,int cols)
public GridLayout(int rows,int cols,int hgap,int vgap)
·CardLayout布局:
将多个组件在同一容器区域内交替显示,相当于多张卡片摞在一起,只有最上面的卡片是可见的。
CardLayout可以按名称显示某一张卡片,或按先后顺序依次显示,也可以直接定位到第一张或最后一张卡片。
主要方法:public void first(Container p)
public void last(Container p)
public void previous(Container p)
public void next(Container p)
public void show(Container p,String name)
·GridBagLayout布局:是建立在GridLayout基础之上的一种极为复杂而灵活的布局方式。
维持动态布局网格。
···容器的嵌套使用很重要,实现了很多功能。
·GUI事件处理:鼠标单击Button时,产生一个ActionEvent对象。
基本概念:
·事件(Event):一个事件类型的对象,用于描述了发生什么事情,当用户在组件上进行操作时会触发相应的事件。
·事件源(Event Source):能产生事件的GUI组件对象,如按钮,文本框等。
·事件处理方法(Event Handler):能够接收、解析和处理事件类对象,实现与用户交互功能的方法。
·事件监听器(Event Listener):调用事件处理方法的对象。
Java GUI设计中,通过注册监听器的方式对所关注的事件源进行监控。
actionCommand属性:用于记录按钮、菜单类组件所激发的ActionEvent事件相关指令信息
·多重监听器:
一般情况下,事件源可以产生多种不同类型的事件,因而可以注册多种不同类型监听器。
一个事件源组件上可以注册多个监听器,针对同一个事件源的同一种事件也可以注册多个监听器,一个监听器可以被注册到多个不同的事件源上。
·事件适配器类(Adapter):针对大多数事件监听器接口定义的响应的实现类,适配器类实现了相应监听器接口中所有的方法,但不做任何事情。