【问题标题】:Of Swing and AWT, why is one considered light-weight and the other heavy-weight?在 Swing 和 AWT 中,为什么一个被认为是轻量级的而另一个被认为是重量级的?
【发布时间】:2010-10-14 21:47:02
【问题描述】:

为什么在JAVA中说Swings是重量级的而AWT是轻量级的?

【问题讨论】:

  • 由于您可能混淆了哪个称为重量级,哪个称为轻量级,因此我将标题模棱两可。如果 Denis Troller 的回答确实回答了您的问题,请告诉我们。
  • AFAIK SWT 的设计目标之一是拥有比 Swing 更少资源消耗的框架,因此 SWT 使用本机 wiggets(因此希望减少用于绘图的内存和 CPU 时间)。但是今天(十多年后)你几乎不会注意到这方面的不同。有趣的是en.wikipedia.org/wiki/Standard_Widget_Toolkit 也包含这种歧义。
  • 也许这回答了你的问题wiki.eclipse.org/FAQ_Why_does_Eclipse_use_SWT%3F

标签: java swing awt


【解决方案1】:

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

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

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

编辑:我认为这是您的问题,尽管您的措辞似乎颠倒了重/轻。重/轻重量几乎是 Java GUI 工具包中的一个标准名称,所以我按照自己的理解进行。 (感谢 BobbyShaftoe 指出这一点)。

【讨论】:

  • 我明白了,也许提问者很困惑,因为问题表明 Swing 被认为是重量级而不是 AWT。
  • 真的。好吧,他要么犯了错误,要么在谈论其他事情,但是由于“重量级”和“轻量级”这两个词在这个话题上几乎是标准的,所以我会犯这个错误。如果答案不是他想要的,他会告诉我们的。
  • 是的,我同意。尽管如此,这很有趣。
【解决方案2】:

在 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.

希望这会有所帮助。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我不完全理解这个问题,我确信这会导致一场激烈的战争,但也许是因为 AWT 提供了一个“更简单”的 API,尽管它更原始一些。然而,如果你喜欢 API,Swing 可以说是一个非常头重脚轻或重量级的东西。它比 AWT 有更丰富的支持和更多的类。

      【讨论】:

      • 也是如此,Swing 由于其视图/模型结构而复杂得多。
      猜你喜欢
      • 2020-12-22
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多