Java图形用户界面设计(GUI)

来源:互联网 发布:网络摄像头数据采集 编辑:程序博客网 时间:2024/05/01 21:39

图形用户界面(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):针对大多数事件监听器接口定义的响应的实现类,适配器类实现了相应监听器接口中所有的方法,但不做任何事情。

 

原创粉丝点击