GUI程序设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本章学习目的
1、图形用户界面(GUI)设计 2、GUI事件处理 3、常用组件和视觉控制 4、AWT绘制 5、Applet 6、Swing介绍
基本概念/术语
图形用户界面 GUI—Graphical User Interface 抽象窗口工具集 AWT—Abstract Window Toolkit 相关软件包: Java.awt包 提供基本GUI组件、视觉控制和绘图工具API Java.awt.event包 提供Java GUI事件处理API
GridBagConstraints介绍
• GridBagLayout通常由一个专用类来对他布局行为进行约束,该类叫 GridBagConstraints.其中的所有成员都是public的, 因此要学好如何使用 GridBagLayout首先要了解有那些约束变量,以及如何设置这些约束变量.

public int anchor public int fill public gridheight Public gridweight public girdx public gridy public Insets insets public int ipadx public int ipady public double weightx public double weighty
Frame
继承层次: java.lang.Object java.awt.Component java.awt.Container java.awt.Window java.awt.Frame Frame对象的显示效果是一个可以自由的顶级“窗口”,带有标尺和尺寸重置角标, 对象的显示效果是一个可以自由的顶级“窗口” 带有标尺和尺寸重置角标 对象的显示效果是一个可以自由的顶级 可以最大化和最小化,关闭按钮是失效的,这是给我们编程人员预留的接口( 可以最大化和最小化,关闭按钮是失效的,这是给我们编程人员预留的接口(我们 将来学了Java事件处理我们就知道了,我们可以关闭某个窗口可以关联上某个业务 事件处理我们就知道了, 将来学了 事件处理我们就知道了 来进行处理) 来进行处理) Frame默认初始化为不可见的,可以调用 默认初始化为不可见的, 对象的setVisible(true)方法变为可 默认初始化为不可见的 可以调用Frame对象的 对象的 方法变为可 见 作为容器Frame还可以 还可以add()方法包含其他组件 作为容器 还可以 方法包含其他组件
GridLayout 布局例子
CardLayout布局
• 布局效果: 将多个组件在同一容器区域内交替显示,相当于多张卡片摞在一起, 只有最上面的卡片是可以见到的。 GardLayout可以按名称像是某一张卡片,或按先后顺序依次显示,也 可以直接定位到第一张或最后一张卡片。 • 主要方法: public void first(Container parent) public void last(Container parent) public void previous(Container parent) public void next(Container parent) public void show(Container parent, String name)
说明
可接收点击操作的矩形GUI组件 复选框组件 复选框菜单项组件 下拉式列表框,内容不可改变 抽象的组件类 抽象的容器类 对话框组件,顶级窗口。带标题栏 用于选择文件的平台相关对话框 基本的Java GUI窗口组件
常见组件和容器(2)
组件类型 Lable List MenuBar Menu MenuItem Panel PopupMenu Scrollbar ScrollPane
组件 组件(Component)是图行用户界面的基本组成元素, 凡是能够以图形化方式显示在屏幕上并能够与用户进行 交互的对象均为组件,如菜单、按钮、标签、文本框、 滚动条等。 组件不能独立地显示出来,必须将组件放在一起的容器 中才可以显示出来。 JDK的Java.awt中定义了多种GUI组件类,如Menu、 Button、Lable、TextField等 抽象类java.awt.Component是除菜单相关组件之外的所 有Java AWT组件类的根父类,该类规定了GUI组件的 基本特性,如尺寸、位置和颜色等,并实现了作为一个 GUI部件所应用具备功能
CardLayout布局例子
GridBagLayout布局
• GridBagLayout是建立在GridLayout基础上的一种极为复杂而灵活的局部方式。 (放到Swing中讲解)
GridBagLayout 介绍 GridBagLayout是所有AWT布局管理器当中最复杂的,同 时他的功能也是最强大的.这种现象源于它所提供的众多 的可配置选项,你几乎可以完全地 控制容器的布局方式.尽 管复杂性很明显,只要理解了基本思想,就很容易使用 GridBagLayout了。 GridBagLayout从它的名字中你也可以猜到,它同 GridLayout一样,在容器中以网格形式来管理组件.但 GridBagLayout功能要来得强大得多。 GridBagLayout管理的所有行和列都可以是大小不同的. GridLayout把每个组件限制到一个单元格,而 GridBagLayout并不这样:组件在容器中可以占据任意大小 的矩形区域,
BorderLayout 例子
GridLayout 布局
• 布局效果: 将容器区域划分成规则的矩形网格,每个单元格区域大小相等,组件 被添加到每个单元格中,按组件加入顺序先从左到右填满一行后换行, 行间从上到下。 GridLayou型布局的组件大小也被局部管理器强行控制,与单元格等 大小,当容器尺寸发生改变时,组件的相对位置保持不变,但大小自 动调整。 构造方法: Public GridLayout(int rows,int cosl) Public GridLayout(int rows,int cols,int hgap,int vgap)
组件定位
Java组件在容器中的定位有布局管理器来决定。 如果要人工控制组件在容器中的定位,可取消布 局管理器,然后使用Component类的下述成员方 法: setLocation() setSize() setBounds() GUI坐标系:
Panel
提供容纳组件的空间 Panel不能独立存在,必须被添加到其他容 器中。 可以采用和所在容器不同的布局管理器 Panel类的继承层次
容器 容器(Container)实际上是Component的子类, 因此容器类对象本身也是一个组件,具有组件的 所有性质,另外还具有容纳其他组件和容器的功 能。 容器类对象可使用方法add()添加组件 两种主要的容器类型: Java.awt.Window 可以自由的停泊在顶级窗口 Java.awt.Panel 可以作为容器容纳其他组件,但是不能独立存在, 必须被添加到其他容器(如Frame)中。
第一个简单的GUI
• • • • • • • • • • • • • import java.awt.Frame; /** * 一个简单的GUI * @author Administrator * */ public class TestFrame { public static void main(String[] args) { Frame f = new Frame("测试"); f.setSize(200, 100); f.setVisible(true); } }
父类
Component Component MenuComponent MenuItem MenuComponent Container Menu Component Container
说明
标签类 包含内容可变的条目的列表框组件 菜单条组件 菜单组件 菜单项组件 基本容器类,不能单独停泊 弹出式菜单组件 滚动条组件 带水平及垂直滚动条的容器组件
java.lang.Object java.awt.Component java.awt.Container java.awt.Panel
Frame和Panel举例
• • • • • • • • • • • • • • • • • • • • import java.awt.Button; import java.awt.Color; import java.awt.Frame; import java.awt.Panel; public class FrameWithPanel { public static void main(String[] args) { Frame f = new Frame("测试panle"); Panel p = new Panel(); f.setSize(200, 170); f.setBackground(Color.cyan); f.setLayout(null);//取消默认的布局管理器 p.setSize(80, 80); p.setBackground(Color.green); p.add(new Button("测试按钮")); f.add(p); p.setLocation(40, 40); f.setLocation(300,300); f.setVisible(true); } }
布局管理器(1) 容器对其中所包含组件的排列方式,包括组件的位置和大 小设定,被称为容器的布局(Layout). 为了是图形用户界面具有良好的平台无关性,java语言提 供了布局管理器来管理容器的布局,而不建议直接设置组 件在容器中的位置和尺寸。 布局管理器类层次 FlowLayout:流式布局;GridLayout:网格式布局; BorderLayout:边界式布局;CardLayout:卡片式布局 GridBagLayout:网袋布局
常见组件和容器(3)
组件类型
Canvas TextComponent TextField TextArea Window
父类
Component Component TextComponent TextComponent Container
说明
用于绘图的面板 TextField和TextArea的基本功能 单行文本框 多行文本框 抽象的GUI窗口类,无布局管理器
ห้องสมุดไป่ตู้
常见组件和容器(1)
组件类型 Button Checkbox CheckboxMenuItem Choice Component Container Dialog FileDialog Frame
父类
Component Component MenuItem Component Object Component Window Dialog Window
布局管理器(2)
每一个容器都有一个布局管理器,当容器 需要对某一个组件进行定位或判断其大小 尺寸时,就会调用其对应的布局管理器。
FlowLayou布局
FlowLayou是Panel容器的默认布局管理器类型。 布局效果: 组件在容器中按照加入次序逐行定位,行内从左到右,一行排满后换行。 不改变组件尺寸,即按照组件原始大小进行显示。 组件间的对齐默认认为居中对齐,也可在构造方法中设置不同的组件间距、 行距对齐方式。 构造方法: Public FlowLayout() Public foowLayout(int align) Public FlowLayut(int align,int hgap,int vgap)
FlowLayout举例
BorderLayout 布局(1)
• • BorderLayout 是Frame容器的默认布局管理器 布局效果: BorderLayout 将整个容器的布局划分成东、西、南、北、中区域,组件只能 被添加到指定的区域。 如不指定组件的加入部位,则默认加入到Center区域。 每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃。 组件尺寸被强行控制,即与其所在的区域的尺寸相同。 构造方法; Public BorderLayout () Public BorderLayout (int hgap,int vgap)
相关文档
最新文档