十七、图形用户界面
AWT 包的类层次结构
AWT 组件的优点是简单、稳定,兼容于任何一个 JDK 版本,缺点是依赖于本地操作系统的 GUI,缺乏平台独
立性。每个
AWT 组件都有一个同位体(peer),它们位于 java.awt.peer 包中,这些 peer 负责与本地操作系统进
行交互,而本地操作系统负责显示和操作组件。由于
AWT 组件与本地平台的 GUI 绑定,因此用 AWT 组件创建的
图形界面在不同的操作系统中会有不同的外观。
===========================================================
=====================================
抽象类
Component 是所有除了菜单类组件之外的 AWT 组件的父类。
Container 类表示容器,用来存放别的组件。有两种类型的容器:Window 和 Panel。
Window 类是不依赖于其他容器而独立存在的容器。
Frame 类带有标题,而且可以调整大小。
Dialog 类可以被移动,但是不能改变大小。
Frame 类通过构造方法 Frame(String title)可以创建一个以参数为标题的 Frame 对象。Frame 的 add()方
法向容器中加入其他组件。当
Frame 被创建后,它是不可见的,必须通过以下步骤使其可见:
1) 调用 setSize(int Width, int height)显式设置 Frame 的大小,或者调用 pack()方法自动确定大小。
pack()方法会确保 Frame 容器中的组件会有与布局相适应的合理大小。
2) 调用 setVisible(true)方法使 Frame 成为可见。
【例程】
SimpleFrame 类的 main()方法创建了一个 Frame 对象,并向 Frame 中加入了一个 Button 对象。
1
import
java.awt.*;
2
public
class
SimpleFrame {
3
public
static
void
main(String[] args){
4
Frame f =
new
Frame(
"hello"
);
5
f.add(
new
Button(
"Press Me"
));
6
f.setSize(100, 100);
//设置 Frame 的宽和高
7
f.setVisible(
true
);
//使 Frame 变为可见
8
}
9
}
【说明】
以上代码将显示一个带
Button 的 Frame,这个 Button 充斥了整个 Frame 空间。
如果把
f.add(new Button("Press Me"))语句移动到 f.setVisible(true)语句之后,再运行程序,将会发现
Button 没有被显示,这是因为当执行 f.setVisible(true)语句时,Frame 按照其当时的状态显示界面,接下来添
加或删除
Frame 中的组件,Frame 的形状是不会自动更新的,除非再调用 f.validate()方法使容器重新布置界面。
-----------------------------------------------------------------------------------------------------------------------------------------