为什么在JAVA中说Swings是重量级的而AWT是轻量级的?
4 回答
AWT 被称为“重量级”,因为基本上每个 AWT 组件都是本机平台组件。AWT 是在平台的本机 GUI 工具包之上实现的。这也解释了为什么 AWT 与 Swing 相比非常有限。就实现的内容而言,它使用最小公分母。
另一方面,Swing 是用 Java 实现的,除了顶级组件(windows ...)之外的几乎所有东西。可以有原生组件,这些仍然被称为“重量级”。
请查看IBM 的此页面,以深入比较 AWT、Swing 和 SWT。
编辑:我认为这是你的问题,即使重/轻似乎在你的措辞中被颠倒了。重/轻重量几乎是 Java GUI 工具包中的一个标准名称,所以我按照自己的理解进行。(感谢 BobbyShaftoe 指出这一点)。
在 Java 世界中,AWT 组件被认为是“重量级”的,因为它们使用底层的原生组件。当您实例化java.awt.Button的实例时,您实际上是在要求底层操作系统为您绘制此对象。
另一方面,Swing 是“轻量级的”,因为它主要依赖于 Java2D API 来完成所有绘制,而这些绘制又委托给底层操作系统或硬件。这也解释了为什么 Swing 需要所有那些执行实际绘画的 UI 组件来模仿特定的外观和感觉(Windows、GTK、Motif 等)。
希望这可以帮助。
因为每个“重量级”组件都有一个本地节点,而“轻量级”组件没有。由于 AWT 是重量级的,每个 AWT Button 在 windows 平台上都有对应的 MFC 按钮,在 Unix 平台上则有 Motif 按钮。由于 Swing 是轻量级的,按钮的图形只是绘制在框架的顶部……没有底层的 MFC 或 Motif 按钮。您可以在 Sun 网站上的混合重型和轻型组件一文中找到有关此主题的更多信息。
我不完全理解这个问题,我确信这将导致一场激烈的战争,但也许是因为 AWT 提供了一个“更简单”的 API,尽管它更原始一些。然而,如果你喜欢 API,Swing 可以说是一个非常头重脚轻或重量级的东西。它比 AWT 有更丰富的支持和更多的类。