一、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

Java界面设计的用途相关推荐

  1. [转]用Eclipse进行可视化Java界面设计

    http://www.diybl.com/course/3_program/java/javashl/200726/11950.html 最近,Eclipse开源项目终于推出了期待已久的Visual ...

  2. java界面设计股票_利用JAVA实现股票交易系统设计参考.doc

    利用JAVA实现股票交易系统设计参考 目 录 摘要1 关键词1 Abstract2 Key words2 1 概述3 1.1 Java体系结构3 1.2 Java的优点3 1.3 Java的应用3 2 ...

  3. java界面设计 代码_Android开发——纯JAVA代码方式界面设计

    之前我们写Android页面都是在XML文件里写的,今天我们换个口味,在JAVA文件里写我们的Android页面.至于为什么要用java来写,不直接在XML文件里写,这个问题的答案很简单,因为麻烦嘛, ...

  4. java界面设计素材_9.java图形用户界面设计.ppt

    9.java图形用户界面设计.ppt 还剩 150页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 151v 程 ...

  5. JAVA——界面设计Swing教程

    前沿 JAVA的swing可以在不同平台运行,因为其源代码纯JAVA,只是运行效率也没那么高.AWT是另一种Sun公司开发的,但是这个包由于调用的是系统图形库,所以不能实现在不同设备的UI相同,所以s ...

  6. 实现计算景区门票打折界面(JAVA界面设计)

    题目描述:需要为一个景区实现计算景区门票的程序,已知成年人的门票价格是100元,儿童票打3折,老年票打5折.使用抽象类来为任意多张不同类型的票计算总价.其UML类图如下所示. 解题思路:本题为我们老师 ...

  7. java界面设计监视器_Java - 使用Synthetica外观和感觉(LAF)和多个监视器最大化窗口...

    我在使用Java 1.7的应用程序中使用Synthetica Black Eye LAF(http://www.jyloo.com/synthetica/).看起来,当我启用了Synthetica L ...

  8. java怎么做界面设计_11-Java 界面设计

    (一)Java界面设计概述 1.Java 界面设计的用途 2.AWT 简介 (1)Abstract Windows Toolkit 是最原始的工具包. 3.Swing 简介 4.SWT 简介 5.如何 ...

  9. 【JAVA】基本图形界面设计

    [JAVA]基本图形界面设计 基本知识点 JAVA中的组件包: 1:采用java.awt.*(abstract Windowing Toolkit) 2:采用javax.swing.* 特点: 前者: ...

最新文章

  1. MySQL和PostgreSQL数据库安全配置
  2. 控制机械手叫什么_用意念控制机械手臂?世界上第一个半机械人即将诞生!
  3. 最终成为了热门的语言——python
  4. 服务器显示数据库,显示数据库服务器上的数据库数据库
  5. 歪枣网Mysql优化总结
  6. 频率主义(Frequentism)与贝叶斯主义(Bayesianism)的哲学辨异与实践(Python仿真)
  7. 在vue项目中配置axios
  8. android 控件监听方法是,Android | Android中监听Button的实现
  9. android8.0华为荣耀8,一线|华为手机开启重大升级 荣耀成安卓8.0覆盖机型最多品牌...
  10. 利用 nodejs 解析 m3u8 格式文件,并下 ts 合并为 mp4
  11. 社会工程学工具集之钓鱼网站的制作
  12. python词云图片在哪儿打开_如何用python创建词云图片
  13. 原生 android 手机,三部具有原生安卓系统的旗舰手机,一部比一部漂亮
  14. 10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏
  15. 《开学第一课》观后感——幸福
  16. .net性能最高的EF分页写法
  17. afm原子力分析软件_【干货】原子力显微镜(AFM)的使用和成像技巧
  18. 新一代人工智能产业八大主要应用场景研判
  19. GlobeLand30影像下载、去除黑边、镶嵌、裁剪、重分类
  20. 【强化学习】Q-Learning原理及代码实现

热门文章

  1. github page+jekyll搭建个人博客总结
  2. foreach+php+四维数组,怎么在PHP中利用foreach对多维数组进行遍历
  3. 敏感性分析算法 程序_计算机程序设计艺术(TAOCP)精读笔记1 - 算法分析真正应该有的样子 Part 1...
  4. java future 返回值_Java--Callable与返回值future
  5. php dao 接口,SSH中公共Dao层、Dao接口
  6. iframe重新加载与修改提交不关闭窗口属性页面
  7. android jersey 上传图片,图片上传--Jersey实现RESTful接口
  8. linux上验证cudnn是否安装成功_Ubuntu 18.04安装CUDA(版本10.2)和cuDNN
  9. 对于计算机专业的调查报告,计算机专业调查报告.doc
  10. 使用 Navicat Premium12 创建报表