Swing和AWT有什么区别?

问题:

有人可以解释一下,Swing和AWT有什么区别?
有没有任何情况下AWT比挥杆更有用/建议使用,反之亦然?

回答:

AWT是您的操作系统中存在的本地系统GUI代码的Java接口。尽管它试图在每个系统上运行不一样。
Swing是一个或多或少的纯Java GUI。它使用AWT创建一个操作系统窗口,然后在该窗口中绘制按钮,标签,文本,复选框等的图片,并响应所有的鼠标点击,键入条目等,决定自己要做什么而不是让操作系统处理它。因此,Swing是100%可移植的,并且在平台上是相同的(虽然它是可皮肤的,并具有“可插拔的外观和感觉”,可以使它看起来或多或少地像本机窗口和小部件的外观)。
这些是与GUI工具包截然不同的方法,并且会产生很多后果。对您的问题的完整回答将尝试探索所有这些。 :)这是一对夫妇:
AWT是一个跨平台的界面,因此即使它使用底层的操作系统或本机GUI工具包来实现其功能,但它不提供对这些工具包可以执行的所有操作的访问。可能在一个平台上可能存在的高级或更新的AWT小部件可能不支持另一个。每个平台上不同的小部件的功能可能不受支持,或者更糟的是,它们可能在每个平台上的工作方式不同。人们曾经投入大量精力来让他们的AWT应用程序在平台之间保持一致 – 例如,他们可能会尝试从Java调用本机代码。
因为AWT使用本机GUI小部件,您的操作系统会了解它们并处理将它们放在彼此之前等等,而Swing小部件是从您的操作系统的角度来看的窗口中无意义的像素。 Swing本身可以处理您的小部件的布局和堆叠。混合AWT和Swing是非常不受支持的,并且可能会导致可笑的结果,例如隐藏其所在对话框中的所有其他内容的本机按钮,因为其他所有内容都是使用Swing创建的。
因为Swing试图在Java中做出一切可能的事情,而不是由本机GUI窗口提供的非常原始的图形例程,所以与AWT相比,它曾经引起相当的性能损失。这使得Swing不幸的是赶上了。然而,由于更优化的JVM,更快的机器和(我推测)Swing内部部件的优化,这在过去几年中已经急剧缩小。今天,Swing应用程序可以运行得足够快,可以使用甚至是zippy,并且几乎与使用本机部件的应用程序无法区分。有些人会说这需要太长时间,但大多数人会说这是非常值得的。
最后,您还可以查看SWT(用于Eclipse的GUI工具包,以及AWT和Swing的替代方法),这有点回到了通过Java访问本机Widgets的AWT想法。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What is the difference between Swing and AWT?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

76 − 67 =