awt 在window 和 linux 是不一样的。而swing 确实统一的。:)
解决方案 »
- 菜鸟 求教!! 请大神们 帮帮忙忙
- 【大二学生】 想做个小程序 不知道用到哪些类, 大家出出主意
- 问个据说是 华为的面试题 - 将方法的局部变量作为参数传给另一个另一个方法中。。
- 请问这个类在api里怎么没有帮助文档呀,那他的文档在哪sun.audio.AudioStream
- 请问怎么样才能通过IO获得一个网站上某个网页的代码?
- 当我的鼠标点击在某个网页的任意点时,我可以知道它的位置信息吗?(b/s架构)
- 各位大虾,怎样实现一个窗口的模式子窗口呢?达到子窗口不关,主窗口就不能用的效果。
- 如何用JAVA实现对应用程序的默认调用?
- 高手请进:用DOM读取XML文件时怎样得到某一元素的行号?
- java中有没有计时器?
- 以ser为后缀的文件是做什么用的?如何生成的?
- —*—*—*—我的問題,保證快速結賬—*—*—*—
还有就是swing是轻量组件没有本地peer跟他对应
而awt是重量组件,每个组件都有一个本地peer
这就是为什么swing组件在大多数系统上显示都差不多而awt就反之了。
说的不错,偶刚买了一本<core jfc>
看上去很美哦!
我在用jb的时候都见到同时出现的。
如:package windows;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
.......................
而awt是重量组件,每个组件都有一个本地peer.这就是为什么swing组件在大多数系统上显示都差不多而awt就反之了。 AWT是通过调用操作系统的native方法实现的,所以在Windows系统上的AWT窗口就是Windows的风格,而在Unix系统上的则是XWindow风格。
Swing是所谓的Lightweight组件,不是通过native方法来实现的,所以Swing的窗口风格更多样化。但是,Swing里面也有heaveyweight组件。比如JWindow,Dialog,JFrame
同时,由于AWT是通过操作系统实现的,所以AWT的组件只能采取各个操作系统的交集,组建数量少,功能少。而Swing则不依赖于操作系统,所以组件多,功能强。
Swing由纯Java写成,可移植性好,外观在不同平台上相同。所以Swing部件称为轻量级组件(轻量级组件就是指:LIGHTWEIGHT COMPONENT,是指,Swing是由纯JAVA CODE所写的,因此SWING解决了JAVA因窗口类而无法跨平台的问题,使窗口功能也具有跨平台与延展性的特性,而且SWING不需占有太多系统资源,因此称为轻量级组件!!!)[转载]既生 AWT,何生 Swing?作者:蔡学镛
在 Java 技术刚出现的初期,大家最感兴趣的 Java API 无疑地就是 AWT。一方面因为 JDK 1.0 时只有 AWT 称得上是一组完整的 application framework,其它 Java API 都比较偏向个别的 class,二方面是因为当时大家受尽了 MFC 的苦,希望能有一个比较好的替代品。
MFC 的兴盛期已过,目前余孽尚存,我很乐见这种不良的 API 逐渐雕零。Bruce Eckel 说得好:「MFC 是我经验过最糟糕的东西(MFC is the worst thing that I've experienced)」。少说重话的 Bruce Eckel 批评 MFC 其来有自,因为 Bruce Eckel 是对象导向程序设计的倡导者,而 MFC 正是对象导向设计失败的绝佳范例。相较于 MFC 的不良设计,AWT 在对象导向方面就好很多了,但是因为两者都采用 ripple 形式的 event model,所以两者在这方面很类似。在 JDK 1.1 版以后,整个 Java(包括 AWT)的 event model 改用较好的 delegation event model。
JDK 1.2 之后,Java 有了另一组 GUI 的 API,叫做 Swing。因为 Swing 是 lightweight 的 API,所以无所不能,不但有各式各样先进的组件,而且连组件风格都可抽换。Swing 出现之后,大家很快地就不太使用 AWT 了。我发现 lightweight 组件近年来大行其道,跨 Windows/unix/Linux 平台的 Qt 也是 lightweight 组件的套件。
不要以为 Swing 是用来取代 AWT 的,其实 Swing 是架构在 AWT 之上做出来的(Swing 有四个 heavyweight 组件),没有 AWT,也就不会有 Swing。Swing 的出现只是减少程序员直接使用 AWT 的机会,而不会让 AWT 消失。
不管你选用 AWT 或 Swing 来开发你的 GUI,最好不要同时使用两者,因为:
AWT 或 Swing 的视觉风格差异很大,混用两者感觉不协调。
Swing 的组件大部分都是 lightweight,而 AWT 的组件一律是 heavyweight,两者混在一起可能会造成 Z-Order 的错乱。(请看「探究 Z-Order」一文)
混用 AWT 和 Swing 很可能会造成 Swing 的最佳化无用武之地,结果速度比只用 AWT 或只用 Swing 都来得慢。
虽然 Swing 的组件有诸多优点,但是它有一项致命的缺点 ...「慢」。许多人开发出来的 Swing 程序执行速度很慢,但是问题不见得全都出在 Swing 上面,有可能在于程序员的程序经验不足,思虑欠周所致。遇到像这样的情况,我会建议他们把程序的某些地方改写,通常效能会有明显地改进。如果这样还是不够快,那么最后一招就是把 GUI 由 Swing 改成 AWT。
最近 AWT 又变得稍微重要起来了。IA(信息家电)产品热潮逐渐兴起,许多 IA 产品上会有 JRE,能够执行 Java 程序,例如 WinCE、PalmOS、Symbian EPOC 这三大 PDA 的 OS 都有 JRE。比起桌上型计算机,掌上型的 IA 不但内存有限、CPU 不够快、屏幕小且色彩少。这类 IA 上面的 Java 程序一定要用 AWT 来设计 GUI,因为这类装置的 JRE 根本不支持 Swing 这样耗费资源的庞然大物。
总而言之,如果你:
需要快速的 GUI,或者
需要在 IA 上开发 Java 程序
那么,你应该多花一点时间把 AWT 学好。否则,你应该直接去学 Swing,会比较实际些。