浅谈Swing和AWT构件

开发 后端
本文简单介绍Swing和AWT构件,以及介绍AWT为JFC的构成提供的的基本结构和抽象窗口工具集等。

Java基本类

Java基本类 (JFC),由一些软件包组成。这些软件包主要包括下面一些应用程序接口(API):
◆抽象窗口工具集(AWT)(1.1及以上版本)。
◆Swing构件。
◆Java2D应用程序接口(2D API)。
◆兼容程序接口。
上面列出的这些应用程序接口可能会出现在多个软件包中。例如:2D API在Java.awt和 Java.awt.image软件包中都存在,虽然像Java.awt.geom等一些特殊的软件包也支持2D API,但 是大量的2D API类都存在于Java.awt软件包中。

AWT(1.1及以上版本)是JFC的核心。AWT为JFC的构成提供了以下的基本结构:
◆代理事件模型。
◆轻量构件。
◆剪贴板和数据传输。
◆打印和无鼠标操作。

抽象窗口工具集

在开发applet和图形应用程序时,一般需要用到AWT,AWT是免费Java开发工具包(JDK)的一部分。 AWT的作用是给用户提供基本的界面构件,例如按钮、列表、菜单、文本域等等。AMT构件主要是用来建立图形用户界面的独立平台。此外,AWT还提供事件处理结构、支持剪贴板、数据传输和图像操作。随着2D API的出现,AWT还包括提供高级字体操作、打印、地理数据获取和输入方法等功能的软件包。AWT的初始版本是基于在简单用户界面中开发小applet 程序而设计的,与之相比,当前的AWT做了很大的改进,它提供事件模型重新设计、剪贴板和数据传输支持以及打印和无鼠标操作等功能。从而与Parc Place的VisualWork或Borland公司的Object Windows Library(OWL)等企业级用户界面具有更多的可比性。

同位体和平台独立

随着Applet程序和图形应用程序接口的发展,AWT提供了一系列的通用类,这些通用类在引用时不需要考虑特定的窗口平台,同位体(Peer)就属于这种AWT类集。同位体是一种本地图形用户接口(GUI)构件,由AWT类管理。同位体的工作方法和它们对程序开发的影响常
常让人混淆。

AWT构件中,包含有对其同位体的大量实用操作。例如,如果你使用AWT创建一个menu类的实例,那么当Java运行时系统将创建一个菜单同位体的实例,而由创建的同位体实际执行菜单的显示和管理。在创建菜单实例中,Solaris JDK将产生一个Motif菜单同位体;Windows 95将产生一个Windows 95菜单同位体;Macintosh JDK将产生一个Macintosh菜单同位体等等。

一个Java程序创建并显示AWT构件,AWT构件创建并显示本地构件(同位体)。AWT开发组决定使用同位体方法,这一方法使得交叉平台窗口工具开发变得极为迅速。使用同位体可以避免重新实现本地窗口构件中已包含的实用工具,而且,使用同位体还能使applet和应用程序保留在本地系统中,这是因为同位体实质上是由本地构件组成的,而AWT类仅仅是同位体外围的包装与操作工具。

虽然在使用AWT时,很少需要直接处理同位体,但它们的存在却影响其操作结果。例如,如果没有同位体,则某些java.awt.Component方法不会象我们所预期的那样进行工作。使用同位体方法可以在记录时间内实现 GUI工具构件。然而,使用同位体也有很多的缺点,同位体设计基础存在缺陷并且不能缩放。

轻量构件

AWT构件全都是重量构件,即它们都具有同位体,并且在本地 (不透明)窗口中进行显示。这样使用将花费昂贵的代价,而且在更改其默认行为时,不可以将其派生为子类。此外,它们必须是矩形的,而且不能有透明的背景。同位体可以快速产生一个GUI工具构件。因为本地同位体做了更多的实际工作,而AWT
类所做的仅仅是表面工作,因此,它很容易开发。开发最初的AWT,只用了不到6个星期的时间。但这种效率带的利益在很大程度上被一些不利因素抵销了,比如基本的同位体结构、有限的事件模式以及同位体与AWT之间不匹配造成的大量缺陷。

1.1版本的AWT引人了轻量构件的概念。Swing构件直接扩展了java.awt.Component或java.awt.Container。轻量构件没有同位体,在其重量容器窗口中显示,而不是在其本身窗口中显示。轻量构件不会导致与它们自己关连的不透明窗口的性能损失,而且还可以有透明的背景。其中有透明背景的性能意味着即使Swing构件的界限域实际上是矩形的,它也可以显示为非矩形。

【编辑推荐】

  1. 介绍学习Swing AWT
  2. 透视Synth与Swing的外观
  3. TikeSwing创建MVC体系结构
  4. 对Java Swing经验的讨论
  5. JFC和Swing中的JLabel组件
责任编辑:佚名 来源: 中国IT实验室
相关推荐

2009-07-14 15:01:02

AWT和Swing

2009-07-17 11:13:46

AWT和SwingSwing组件

2009-07-10 17:03:17

AWT组件Swing组件

2009-07-16 13:37:33

Swing和AWT

2009-07-15 16:39:51

AWT和Swing

2009-07-17 10:11:55

AWT和Swing

2009-07-17 09:36:14

SWT和Swing的区

2009-07-16 13:50:28

AWT和Swing

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-14 17:38:20

Swing模式

2009-07-17 09:07:20

2009-07-14 12:58:49

AWT和Swing

2009-07-17 10:01:14

Swing和AWT

2009-07-10 15:41:27

Swing AWT

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-10 11:07:18

Swing和SWT

2009-07-16 16:01:55

EventQueue

2009-07-17 09:55:02

事件监听器SWT和SwingAWT

2009-07-17 10:25:41

AWT和SwingSWT

2009-07-15 13:06:38

Swing组件
点赞
收藏

51CTO技术栈公众号