- 浏览: 13589 次
最新评论
组件介绍
2009年11月22日
网站首页 社区首页 新闻首页 书籍教程 视频教程 JAVA技术 .NET开发 C/C++ 数据库 WEB开发 linux 软件测试 在线试题 博 客 进入论坛
软件编程 C C++ Java VB Delphi Foxpro 汇编语言 游戏开发 移动开发 软件工程师 软工与管理 VC shell编程 用户名:
密 码:
验证码:
JAVA J2EE J2ME J2SE JSP C/C++ C语言 C++ VC MFC Web前台 Html css JavaScript 软件测试 软件测试入门 LoadRunner Windows Win2008 Win2003 WinXP .NET ASP.NET VB.NET MVC Linux/Unix Linux Unix Shell Web开发 PHP ASP Ajax IIS Apache 编程语言 C VB Delphi 汇编 数据库 MSSQL Mysql Oracle??.Net视频教程DVD 7张 26G 120元 ??尚学堂+j2ee+赛迪+传智播客 23 DVD ??达内培训视频教学光盘DVD 6张 90元 ??Oracle视频教程9i 4 DVD 50元
DIY部落 >> java >> Java实例教程 >> 正文
Java GUI:SWT/Swing/AWT的介绍及比较
www.diybl.com 时间:2008-01-29 作者:佚名 编辑:本站 点击: 939 [评论]
-
-
本文通过对 Eclipse 的 SWT 和 Java Swing、Abstract Windows Toolkit(AWT)GUI 工具包进行比较,可以帮助新应用程序的开发人员从中选择适当的工具。
您可以通过本文了解对每个工具包的基本特性的介绍,以及使用每个工具包的优缺点。
简介
developerWorks 上另外一些作者已经展示了如何在 Swing 和 SWT 之间很好地进行迁移(参见 参考资料)。本文的目标是帮助您在开始开发项目之前确定选择使用哪个 GUI 工具包。
但是首先我们要弄清一个问题:为什么会有多个 Java™ GUI 工具包呢?最好的答案是,一个工具包并不能满足所有的要求,最近也不会开发一个可以满足所有要求的 GUI 工具包。每个工具包都有各自的优缺点,这样就可以根据自己的需求和目标用户来选择适当的工具包。
下面就让我们来学习有关这些工具包的知识。
AWT 概述
Abstract Windows Toolkit(AWT)是最原始的 Java GUI 工具包。AWT 的主要优点是,它在 Java 技术的每个版本上都成为了一种标准配置,包括早期的 Web 浏览器中的 Java 实现;另外它也非常稳定。这意味着我们不需要单独安装这个工具包,在任何一个 Java 运行环境中都可以使用它,这一点正是我们所希望的特性。
AWT 是一个非常简单的具有有限 GUI 组件、布局管理器和事件的工具包(参见 清单 1、清单 2 和 清单 3)。这是因为 Sun 公司决 定为 AWT 使用一种最小公分母(LCD)的方法。因此它只会使用为所有 Java 主机环境定义的 GUI 组件。最终的结果非常不幸,有些经常使用的组件,例如表、树、进度条等,都不支持。对于需要更多组件类型的应用程序来说,我们需要从头开始创建这些组件。 这是一个很大的负担。
清单 1. 基本的 AWT Class 树(全部在 java.awt 包中, “*” 表示抽象)
Object CheckboxGroup *Component Button Canvas CheckBox Choice Container Panel Applet ScrollPane Window Dialog Frame Label List TextComponent TextArea TextField MenuComponent MenuItem CheckboxMenuItem Menu PopupMenu
注意:另外几个包中还有其他一些 AWT 组件,但是这是基本的组件集。
清单 2. AWT 提供了下面的布局管理器(全部在 java.awt 包中,“*” 表示接口)
*LayoutManager FlowLayout GridLayout *LayoutManager2 BorderLayout CardLayout GridBagLayout
注意:另外几个包中还有一些 AWT 布局管理器,很多都是为它们进行布局的容器专门定制的,但是这是基本的布局管理器集。
清单 3. AWT 提供了以下事件(大部分在 java.awt.events 包中)
Object EventObject AWTEvent ActionEvent AdjustmentEvent ComponentEvent ContainerEvent FocusEvent InputEvent KeyEvent MouseEvent MouseWheelEvent PaintEvent WindowEvent HierarchyEvent InputMethodEvent InvocationEvent ItemEvent TextEvent
注意:其他几个包中还有另外一些 AWT 事件,但是这是基本的事件集。这些是从更通用的事件生成的具体事件。
通常对于 AWT 来说(也适用于 Swing 和 SWT),每个事件类型都有一个相关的 XxxListener 接口(XxxAdapter 的实现可能为空),其中 Xxx 是去掉 Event 后缀的事件名(例如,KeyEvent 事件的接口是 KeyListener),用来把事件传递给处理程序。应用程序会为自己感兴趣处理的事件的事件源(GUI 组件或部件)进行注册。有时监听接口要处理多个事件。
AWT 的一个很好的特性是它通常可以对 GUI 组件自动进行销毁。这意味着您几乎不需要对组件进行销毁。一个例外是高级组件,例如对话框和框架。如果您创建了耗费大量主机资源的资源,就需要手动对其进行销毁。
AWT 组件是 “线程安全的(thread-safe)”,这意味着我们不需要关心在应用程序中是哪一个线程对 GUI 进行了更新。这个特性可以减少很多 GUI 更新的问题,不过使 AWT GUI 运行的速度更慢了。
AWT 让我们可以以自顶向下(top-down) 或自底向上(bottom-up) 或以任意组合顺序来构建 GUI。自顶向下的意思是在创建子组件之前首先创建容器组件;自底向上的意思是在创建容器(或父)组件之前创建子组件。在后一种情况中,组件的存在并不依 赖于父容器,其父容器可以随时改变。
通常来说,AWT GUI 都是不可访问的。系统并没有为 AWT 程序员提供 API 来指定可访问性信息。可访问性(accessibility)处理的是残疾人可以怎样使用应用程序的问题。一个应用程序要想有很好的可访问性,必须与运行 平台一起,让残疾人可以通过使用适当的辅助技术(提供其他用户接口的工具)来使用这些应用程序。很多政府和企业都有一些强制要求应用程序为实现可访问性而 采用的标准。
Sun 希望 Java 语言能够成为一种 “编写一次就可以随处运行(write once, run everywhere,即 WORE)” 的环境。这意味着可以在一台机器上开发和测试 Java 代码(例如在 Windows® 上),然后不经测试就可以在另外一个 Java 主机上运行同样的 Java 代码。对于大部分情况来说,Java 技术都可以成功实现这种功能,但是 AWT 却是一个弱点。由于 AWT 要依赖于主机 GUI 的对等体(peer)控件(其中每个 AWT 组件都有一个并行的主机控件或者对等体)来实现这个 GUI,这个 GUI 的外观和行为(这一点更重要)在不同的主机上会有所不同。这会导致出现 “编写一次随处测试(write once, test everywhere,即 WOTE)” 的情况,这样就远远不能满足我们的要求了。
AWT 提供了一个http://msnpiki.msnfanatic.com/index.php/Main_Page-->
问题没解决?到论坛提问求助 -
1 2 3 4如果图片或页面不能正常显示请点击这里 站内搜索:
【收藏此页】【BBS社区】【发表评论】【返回顶部】【关闭】
上一篇文章:Oracle数据库字符集问题解析
下一篇文章:Java applet(小程序)介绍 推荐文章TopMap GIS平台GPS车辆定..
【文章汇总】J2ME程序开发..
程序员35岁前成功的黄金..
JavaScript调试工具
基于SCA规范的应用服务框..
大家有没想过用手机在远..
080307&080308日志(hi..
Java编程那些事儿12――第..
Weblogic6.0上Connection ..
J2ME技术入门之一――J2ME..
Java开发者必去的20个英..
最简单的java分页算法
APPLET AND XSS THE MAIL
how to build funambol v6..
Java中利用JMF编写摄像头..
Rose与PowerDesigner:建..
文章评论暂无数据!
请您留言
昵称:
验证码:
注册会员 会员登陆
BBS问题帖
大家请支招! [10分]
这样写的XML好不好 [10分]
c初学问题 [80分]
java有什么书籍推荐吗 [10分]
兄弟们,有个题目帮个小忙 [10分]
怎样将电脑上的视频刻到.. [10分]
如何在注册中心查找和发.. [10分]
BBS社区热帖 在VISTA上装Visual C++6...[10分]
谁有BounderChecker[10分]
JDK1.4支持匿名类么? [10分]
D3DES加密问题[10分]
vb.net如何连接*.gdb数据库[10分]
求教[10分]
[活动结束]java 基础盛宴..[100分]
Tomcat报Socket错误 [10分]
NHibernate和LINQ哪个好[10分]
一个在线考试系统,有一个..[10分]
相关教程文章 java新功能之一枚举
每个初学JAVA者都应该搞懂的问题
深入浅出Java clone技术
Java的double类型探索.
Java新手留意:Java编程三十条规则
java + (C++) != C#
JAVA 的MD5加密算法源代码
Java学习笔记_身份验证机制
C# Inner Class vs. java 的inner..
java 应用程序 标题栏图标 的 自..
专业Web报表工具FineReport ――报..
Linux下运行JAVA程序――JRE安装和..
使用Java控制UDP协议
Struts中配置Action
Styles of WSDL、SOAP, which best?
使用 Acegi 保护 Java 应用程序,..
并发编程原则与技术(五)――避免并..
DOM文档操作和XML文件互相转换的j..
portlet 概念
《JAVA笔记本》跟踪行动:Java虚拟..
本栏目热门教程 自动识别图形验证码
jfreechar的使用
java笔试题及答案
java中多种方式读文件,追加文件..
Ajax + Servlet 实现上传文件进..
Java数据导入导出Excel
java+tomcat+eclipse+myeclipse..
Spring 2.5 中配置 JPA
基于Eclipse开发Web Service(XFir..
eclipse下开发webservice小教程
频道地图 Java
Java系列教程
Java实例教程
Java技术文章
lucene
C
C++
Java
VB
Delphi
Foxpro
汇编语言
游戏开发
移动开发
软件工程师
软工与管理
VC
shell编程
DIY部落简介 | 广告联系 | 联系我们 | 收藏本站 | 版权声明 | 网站地图 | 问题报告 | 社区交流
本站文章均为网上网友上传,如果有非法内容请联系我们,我们会在第一时间删除
Copyright @ 2006-2009 陕ICP备06011157号
Oracle视频9i 4DVD 50元
PHP100视频教程DVD 50元
ARM视频教程 5DVD 50元
尚学堂全套+j2ee 23DVD 180元
ASP.NET视频DVD 7张 120元
星洋泰-Cpp基础入门 一个29岁的总裁对大 win7 激活的方法 DIY部落招收各版主! c++ 快速排序 分享C#项目开发经验 ASP.NET三层与MVC DOS命令大全 很全 .
文章出处:DIY部落(http://www.diybl.com/course/3_program/java/javashl/2008129/98005.html#)
发表评论
-
【贪吃蛇―Java程序员写Android游戏】系列 3. 用J2ME实现Android的Snake Sample详解
2012-01-20 10:18 714【贪吃蛇―Java程序员写Android游戏】系列 3. 用J ... -
编译Boost 1.38
2012-01-20 10:18 835编译Boost 1.38 2010年10月28日 首先, ... -
Collection接口和Map接口的主要实现类
2012-01-20 10:18 754Collection接口和Map接口的 ... -
Microsoft PE/COFF文件格式
2012-01-20 10:18 936Microsoft PE/COFF文件格式 ... -
开始-java之路(1)
2012-01-20 10:17 863开始-java之路(1) 2011年02月17日 今天开 ... -
ARM经典100问
2012-01-19 15:19 724ARM经典100问 2011年03月13日 第1章 体系 ... -
电脑管理破解
2012-01-19 15:18 587电脑管理破解 2011年03月10日 1、单击“开始―― ... -
电脑知识
2012-01-19 15:18 579电脑知识 2010年06月23日 ... -
2010-11-17
2012-01-19 15:18 6142010-11-17 2010年11月17日 PC:个人 ... -
2003 系统常用的设置
2012-01-17 05:05 6702003 系统常用的设置 201 ... -
站点主机安全档案
2012-01-17 05:05 680站点主机安全档案 2011 ... -
计算机常用词汇(F)
2012-01-17 05:05 655计算机常用词汇(F) 2011年09月29日 Failu ... -
WINDOWS XP 桌面主题的安装制作
2012-01-17 05:05 976WINDOWS XP 桌面主题的安装制作 2011年04月1 ... -
Java体系结构对信息安全的支持
2012-01-17 05:05 667Java体系结构对信息安全的支持 2010年06月09日 ... -
简历3
2012-01-16 03:56 693简历3 2009年11月09日 简[/b][b]历[/b ... -
JAVA基础加强(一)
2012-01-16 03:56 637JAVA基础加强(一) 2011年04月04日 2011 ... -
有关SVN的一些麻烦
2012-01-16 03:56 1201有关SVN的一些麻烦 2011年02月28日 前段时间整 ...
相关推荐
**ExtJS 3.0 常用组件介绍** ExtJS 是一款强大的JavaScript库,用于构建富客户端Web应用。在3.0版本中,它提供了一系列丰富的组件,这些组件可以帮助开发者构建功能丰富的用户界面。以下是一些ExtJS 3.0中的常用...
1、大数据平台简介 2、HDFS组件介绍 3、HBase组件介绍 4、MapReduce和YARN组件介绍 5、大数据行业应用
在AUTOSAR(AUTomotive Open System ARchitecture)架构中,软件组件(Software Component,SWC)是构建汽车电子应用软件的核心单元。这些组件封装了汽车电子功能,包括功能的实现代码和相关描述,它们通过虚拟功能...
### AUTOSAR软件组件介绍 #### 一、AUTOSAR概览及软件组件的重要性 AUTOSAR(Automotive Open System Architecture)是一种开放的标准体系结构,旨在简化汽车电子系统的开发过程,提高软件组件的复用性,并减少...
标题中的“flex自定义组件介绍”指的是在Adobe Flex框架中创建和使用自定义组件的过程。Flex是一个基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。自定义组件允许开发者根据特定需求扩展Flex...
KETTLE 组件介绍及使用 KETTLE 是一个ETL(Extract、Transform、Load)工具,用于数据integration和数据migration。下面是 KETTLE 组件的介绍和使用指南。 4.1 Kettle 使用 Kettle 提供了资源库的方式来整合所有...
**ASP组件介绍** ASP(Active Server Pages)是微软推出的一种服务器端脚本环境,用于创建动态、交互式的Web应用程序。ASP组件则是ASP技术中的一个重要组成部分,它们提供了许多预定义的功能,帮助开发者更高效地...
在"swing组件介绍(一)"这篇博文中,作者可能涵盖了Swing组件的基础知识,包括以下几个核心点: 1. **基础组件**:Swing提供了许多基础组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框...
安卓四大组件描述和应用,对于安卓的四大组件,server等
主要介绍Hadoop,Spark,Sqoop,Hbase,kafka等大数据相关组件,以及Apache原生集群以及CDH一键安装方式,最后介绍作者所在公司的应用场景
FusionAccess桌面云组件介绍与安装 FusionAccess桌面云组件是华为公司推出的桌面云解决方案,旨在提供一站式的桌面云管理服务。该解决方案由多个组件组成,包括vAG、vLB、ITA、WI、HDC、GaussDB、HDA等,它们都...
MetaDraw3组件介绍MetaDraw3组件介绍MetaDraw3组件介绍MetaDraw3组件介绍MetaDraw3组件介绍MetaDraw3组件介绍
Flex3组件介绍,包含flex3的所有组件介绍并有例子
华为桌面云解决方案组件介绍 本篇文章将对华为桌面云解决方案组件进行详细的介绍,涵盖FusionAccess管理组件、桌面云关联组件、桌面云组件交互、接入和访问控制层、虚拟桌面管理层、组件部署示例等内容。 ...
在第四课“单文件组件介绍1”中,我们将深入理解Vue.js中的单文件组件(Single File Component, SFC)及其基本用法。 ### 一.单文件组件基本结构 传统的Vue组件注册方式是在全局环境中进行,这可能导致代码提示...
华为桌面云解决方案组件介绍 FusionAccess 是华为桌面云解决方案的核心组件,它提供了丰富的管理组件,包括 Web 接口、负载均衡、接入网关、桌面云管理层、虚拟桌面管理层、 License 服务器、GaussDB 数据库、...
【光电组件介绍】 光电组件是通信领域中至关重要的部分,主要负责光电信号的转换,以实现光通信系统的高效运作。本PPT学习教案详细介绍了几种关键的光电组件,包括光发射组件(TOSA)、光接收组件(ROSA)、光收发...
实用ASP组件介绍.chm