JAVA中的GUI界面
现在来说一下JAVA中的GUI( Graphical User
Interface)界面,这是本周还没有学习过的问题,另外我要说的是以后的每周博文都抽出一到两篇还没有学习的课程作为预习后所写博文,从本周开始全面执行这种方式,本周先简要介绍JAVA中的图形界面,在开发JAVA中的图形界面时有三个包是我们要用到的,它们是:AWT、SWing、SWT/JFace。其中现阶段我们主要是用SWing,AWT基本上不怎么用了,而SWT/JFace可能在J2EE高级阶段会用到(注意:SWT/JFace不是JAVA标准的一部分)。
一、AWT组件:
AWT(Abstract Windowing
Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类被称为组件(components)。
抽象窗口工具包 (Abstract Windowing Toolkit)
(AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包。AWT是Java基础类
(JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API。
AWT提供了Java Applet和Java
Application中可用的用户图形界面GUI中的基本组件(components)。由于Java是一种独立于平的程序设计语言,但GUI却往往是依赖于特定平台的,Java采用了相应的技术使得AWT能提供给应用程序独立于机器平台的接口,这保证了同一程序的GUI在不同机器上运行具有类似的外观(不一定完全一致)。
抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立图形用户界面GUI
(Graphics User
Interface)工具集,AWT可用于Java的applet和applications中。它支持图形用户界面编程的功能包括:用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。
二、Swing组件:
Java Swing是Java Foundation
Classes(JFC)的一部分,它是试图解决AWT缺点的一个尝试。从这一点上来说,Swing可以说是站在前人(以AWT的表现,实在很难称之为巨人)的肩膀上了。SWING解决了AWT的很多缺点。相对于AWT,
Swing是轻量级元件。SWING
提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的观感和主题(各种操作系统默认的特有主题),然而Swing不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JAVA支持的任意观感。轻量级元件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。
三、SWT/JFace组件:
SUN不接纳SWT/JFace作为Java中的一种图形API标准,但它虽然借着Eclipse的优异表现,以不可阻挡之势向前发展着。终于可以用SWT/JFace轻松的开发出高效率的GUI程序,且拥有标准的Windows外观,Eclipse软件就是基于SWT/JFace构建的,大家看看Eclipse3.2就知道SWT有多么的棒。
解释一下SWT与JFace的区别,JFace其实是在SWT的基础上,采用MVC模式进行了封装而形成的一个新的类库,这一封装,大大简化了采用SWT开发Java图形用户界面的难度。在SWT推出后不久,出现了一个名为SWT
Designer的Eclipse插件,使用该插件可以像采用Visual Studio
.NET开发Window图形用户界面一样简单,可以采用可视化拖拽的方式进行。不要以为这是一个很小的进步,要知道用Java写GUI程序能够简单到这种程度,这在以前可是想都不敢想的事情。.NET平台之所以成功,很大程度上与它的IDE——Visual
Studio .NET,优异的表现有关,而Visual Studio .NET最值得称道的就是它的可视化设计模式。
SWT/JFace直接调用了操作系统的图形库,从而使得Java应用程序的Look & Feel
与操作系统的习惯完全一致;更为重要的是,SWT/JFace采用有限调用本地方法(控件),只有当本地找不到所需要的控件时,才进行模拟。对本地方法的直接调用大幅度的提高了基于SWT/JFace的Java应用程序的运行速度。相信使用过JBuilder和Eclipse的开发人员会有切身的体会。一般来说,基于Swing的JBuilder需运行在1G以上内存的机器上,而Eclipse则可以在512M内存的机器上跑的很欢。SWT/JFace具有比AWT更为丰富的控件,比Swing更为快捷的速度。