摆动部件重量轻?

时间:2009-01-06 15:23:57

标签: java swing awt

每当我读到Swing时,他们都会说它们是轻量级组件。所以我只是用谷歌搜索Swing,发现这意味着Swing不依赖于本地同行。这就是为什么他们被称为“轻量级”?我的意思是重量轻,我想可能Swing组件比AWT组件占用更少的内存。不是这样吗?

3 个答案:

答案 0 :(得分:12)

Swing被认为是轻量级的,因为它完全用Java实现,而不需要调用本机操作系统来绘制图形用户界面组件。

另一方面,AWT(Abstract Window Toolkit)是重量级工具包,因为它只是调用操作系统来生成GUI组件。

Evolution of the Swing Paint System文章中的Painting in AWT and Swing部分解释了轻量级和重量级之间的区别:

  

原始AWT API时   仅为JDK 1.0开发   重量级组件存在   (“重量级”意味着   组件有自己的不透明原生   窗口)。这使得AWT可以依赖   严重依赖每个油漆子系统   原生平台。

     

[...]

     

使用   轻量化的引入   JDK 1.1中的组件(“轻量级”)   组件是重用的组件   最接近的原生窗口   重量级祖先),AWT需要   实施油漆加工   共享中的轻量级组件   Java代码。

由于Swing是用Java实现的,它确实有一些性能劣势,但是,我听说在最近的Java版本中性能有所提高。

Swing的优势在于它有更多可用的组件,例如JTableJList,它们比AWT中提供的组件更具图形性和可扩展性,允许更多图形丰富的应用程序开发的。

答案 1 :(得分:8)

轻量级与重量级是如何实现UI组件的问题。重量级组件包装操作系统对象,轻量级组件则不包含。它们严格地在JDK中实现。

答案 2 :(得分:0)

这只是一个在另一个背景下解决重量级与轻量级的附录:编程模型。

在这种情况下,Swing绝对是重量级和复杂的。 它被认为不适合瘦客户端实现,并且考虑到今天有这么多不同的设备,Swing实际上是死技术,即使Oracle还没有退出它......(另见JavaFX作为替代方案) )。