background image

十七、图形用户界面

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()方法使容器重新布置界面。

-----------------------------------------------------------------------------------------------------------------------------------------