Swing和AWT,为什么一个被认为是轻量级而另一个是重量级?

时间:2009-03-23 04:28:51

标签: java swing awt

为什么说JINGA重量轻且AWT重量轻?

4 个答案:

答案 0 :(得分:12)

AWT据说是“重量级”,因为基本上每个AWT组件都是本机平台组件。 AWT是在平台的本机GUI工具包之上实现的。 这也解释了为什么AWT与Swing相比非常有限。就所实施的内容而言,它使用最小公分母。

另一方面,Swing是用Java实现的,除了顶级组件(windows ...)之外几乎所有东西。可能存在本机组件,但这些组件仍被称为“重量级”。

查看IBM的this page,深入比较AWT,Swing和SWT。

编辑:我认为这是你的问题,即使在你的措辞中重/轻似乎是颠倒了。重/轻的重量几乎是Java GUI工具包中的标准面额,所以我理解了。 (感谢BobbyShaftoe指出这一点。)

答案 1 :(得分:1)

在Java世界中,AWT组件被认为是“重量级”,因为它们使用底层本机组件。当您实例化 java.awt.Button 的实例时,实际上是在要求底层操作系统为您绘制此对象。

另一方面,Swing是“轻量级的”,因为它主要依靠Java2D API来进行所有绘制,而绘制又会委托给底层操作系统或硬件。这也解释了为什么Swing需要所有那些用于模拟特定外观的UI组件(Windows,GTK,Motif等)。

This article explains more in detail the difference between light-weight and heavy-weight components.

希望这有帮助。

答案 2 :(得分:0)

因为每个“重量级”组件都有本地对等,而“轻量级”组件则没有。由于AWT是重量级的,因此每个AWT按钮在Windows平台上都有相应的MFC按钮,或者在Unix平台上有Motif按钮。由于Swing是轻量级的,按钮的图形只是绘制在框架的顶部...没有底层的MFC或Motif按钮。您可以在Sun网站上的文章Mixing heavy and light components中找到有关此主题的更多信息。

答案 3 :(得分:-1)

我并不完全理解这个问题,我确信这会导致一场火焰战,但也许是因为AWT提供了一个“更简单”的API,尽管它有点原始。然而,如果你喜欢API,摇摆可以说是一个非常重的或重量级的。它比AWT拥有更丰富的支持和更多的课程。