Java界面设计的用途

简介:

一、Java界面设计的用途:

    JavaSE(Java Standard Edition)即Java标准版,一般也可以理解作Java桌面版。开发者可以通过JavaSE开发丰富并且强大的具有图形界面的桌面应用程序。

    Java的图形化界面工具包,可以用于工具类软件开发、管理类软件开发、通用客户端开发、银行客户端软件开发、Eclipse插件开发等方向。在许多知名的大型软件中,都能见到Java的身影,如某些版本的Photoshop、思维导图软件、Eclipse、IDEA开发环境等。

    开发者也可以使用Java为自己设计一些提高效率的工具软件,帮助自己处理机械性的工作。

    为何Java有多套GUI工具包?最好的答案是,没有一个可以满足所有要求的GUI工具包。

    Java的GUI工具包包含AWT、Swing和SWT,每个工具包都有各自的优缺点,开发者可以根据自己的需求和目标用户来选择适当的工具包。

二、Java GUI设计的三个工具包:AWT Swing SWT

    AWT(Abstract Windows Toolkit)是最原始的Java GUI工具包。AWT的主要优点是,它在Java技术的每个版本上都成为了一种标准配置,包括早期的Web浏览器中的Java实现;另外它也非常稳定。这意味着我们不需要单独安装这个工具包,在任何一个Java运行环境中都可以使用它。

    AWT是一个非常简单的具有有限GUI组件、布局管理器和事件的工具包(如窗体、文本标签、按钮、菜单等)。这是因为Sun公司决定为AWT使用一种最小公分母(LCD)的方法。因此它只会使用为所有Java主机环境定义的GUI组件。

    由于AWT要依赖主机GUI的对等体(peer)控件(其中每个AWT组件都有一个并行的主机控件或者对等体)来实现这个GUI,这个GUI的外观和行为在不同的主机上会有所不同。这和Java的“一次编写,处处运行”理念冲突,所以构成了AWT的局限性。


    Java Swing是Java Foundation Classes(JFC)的一部分,它是试图解决AWT缺点的一个尝试。在Swing中,Sun开发了一个经过仔细设计的、灵活而强大的GUI工具包。Swing是在AWT组件基础上构建的。Swing使用了AWT的事件模型和支持类,例如Colors、Images和Graphics。Swing组件、布局管理器以及事件比AWT提供的组件集更为广泛,完全满足各种开发需求。

    为了克服在不同主机上行为也会不同的缺点,Swing将主机控件的依赖性降至了最低。实际上,Swing只为诸如窗口和框架之类的顶层组件使用对等体。大部分组件(JComponent及其子类)都是使用纯Java代码来模拟的。这意味着Swing天生就可以在所有主机之间很好地进行移植。因此,Swing通常看起来并不像本地程序。实际上,它有很多外观,有些模拟不同主机的外观,有些则提供了独特的外观。

    Swing对基于对等体的组件使用的术语是重量级(heavyweight),对于模拟的组件使用的术语是轻量级(lightweight)。事实上,Swing可以支持在一个GUI中混合使用重量级组件和轻量级组件,例如在一个JContainer中混合使用AWT和Swing控件。除此之外,它还有以下优势:1.基于MVC结构 2.可编程外观 3.呈现器与编辑器 4.支持以任意顺序构建GUI 5.可访问性 6.支持自动销毁 7.是标准Java的一部分


    SWT也是基于一个对等体实现的,在这一点上它与AWT非常类似。它克服了AWT所面临的LCD问题,方法如下:定义了一组控件,它们可以用来构建大部分办公应用程序或开发者工具,然后可以按照逐个主机的原则,为特定主机所没有提供的组件创建模拟控件(这与Swing类似)。对于大部分现代主机来说,几乎所有的控件都是基于对等体的。这意味着基于SWT的GUI既具有主机外观,又具有主机的性能。这样就避免了使用AWT和Swing而引起的大部分问题。特定的主机具有一些低级功能控件,因此SWT提供了扩充(通常是模拟的)版本(通常使用“C”作为名字中的第一个字母),从而可以产生更一致的行为。

    在SWT中,对等体只是主机控件上的一些特殊封装程序而已。这意味着SWT应用程序实际上就是一个主机应用程序,它必然会全部继承主机的优点和缺点。这还意味着SWT不能完全实现“一次编写,处处测试”解决方案。这就是说,SWT尽管不如Swing那么优秀,但是它在创建可移植解决方案方面是很杰出的。此外,SWT还具有以下特点:1.不支持GUI自动销毁 2.仅支持自顶向下构建GUI 3.对Java2D的支持不够完善 4.不属于标准Java的一部分

三、如何选择GUI工具包的使用

    Swing是最灵活、强大的GUI工具包,所以在界面开发中,首选Swing,它可以胜任绝大多数开发工作。

    只有一种场合不适合用Swing:在使用SWT开发的程序上继续编写界面,比如为Eclipse开发插件(因为Eclipse是基于SWT构建的)。SWT与Swing不兼容,他们不能混合使用。


本文转自yeleven 51CTO博客,原文链接:http://blog.51cto.com/11317783/1765609


相关文章
|
7月前
|
算法 Java 开发者
探索Java递归算法在文档管理系统中的多重用途
Java递归算法是一种函数调用自身的算法。在Java中,递归算法可以用于解决许多问题,如树的遍历、排序、搜索等。
90 2
|
7月前
|
缓存 安全 Java
解锁Java面试中的锁:深入了解不同类型的锁和它们的用途
多线程编程在现代软件开发中扮演着至关重要的角色。它使我们能够有效地利用多核处理器和提高应用程序的性能。然而,多线程编程也伴随着一系列挑战,其中最重要的之一就是处理共享资源的线程安全性。在这个领域,锁(Lock)是一个关键的概念,用于协调线程之间对共享资源的访问。本文将深入探讨Java中不同类型的锁以及它们的应用。我们将从基本概念开始,逐步深入,帮助您了解不同类型的锁以及如何选择合适的锁来解决多线程编程中的问题。
|
6月前
|
Java
在Java中,接口、抽象类、静态类以及非静态类有着各自的特点和用途
在Java中,接口、抽象类、静态类以及非静态类有着各自的特点和用途
|
6月前
|
Java 容器
Java 并发编程:解析多种队列类型的用途 Queue Nice !!!
Java 并发编程:解析多种队列类型的用途 Queue Nice !!!
30 0
|
10月前
|
Java API 数据安全/隐私保护
翻阅必备,一看必知——Java -GUI界面设计(容器,布局,监听,事件 API大全
翻阅必备,一看必知——Java -GUI界面设计(容器,布局,监听,事件 API大全
167 0
|
Java
Java中的可变参数使用语法及用途
Java中的可变参数使用语法及用途
130 0
Java中的可变参数使用语法及用途
|
Java 编译器 小程序
JAVA学习(二):JDK介绍及其结构、用途
<h1 style="text-align:center">JDK介绍及其结构、用途</h1> <p style="text-align:center"><br></p> <h2>1、JDK的介绍</h2> <p><br></p> <p>JDK是Java Development Kit 的缩写,是Sun Microsystems针对Java开发员的产品。它由一个处于操作系统层之上的
3578 0
|
3天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
20 0