每当我读到Swing时,他们都会说它们是轻量级组件.所以我只是用谷歌搜索Swing,发现这意味着Swing不依赖于本地同行.这就是为什么他们被称为"轻量级"?我的意思是重量轻,我想可能Swing组件比AWT组件占用更少的内存.不是这样吗?
Swing被认为是轻量级的,因为它完全用Java实现,而不需要调用本机操作系统来绘制图形用户界面组件.
另一方面,AWT(抽象窗口工具包)是重量级工具包,因为它只是调用操作系统来生成其GUI组件.
来自AWT和Swing中的绘画的Swing Paint System部分的演变解释了轻量级和重量级之间的区别:
当为JDK 1.0开发原始AWT API时,只存在重量级组件("重量级"意味着该组件具有自己的不透明本机窗口).这使得AWT在很大程度上依赖于每个本机平台中的绘图子系统.
[...]
随着JDK 1.1中轻量级组件的引入("轻量级"组件是重用其最接近的重量级祖先的本机窗口的组件),AWT需要在共享Java代码中实现轻量级组件的绘制处理.
由于Swing是用Java实现的,它确实有一些性能劣势,但是,我听说在最近的Java版本中性能有所提高.
摇摆的优点是,它有许多可用的多个组件,如JTable
和JList
它们比AWT提供的组件更图形化和可扩展性,允许更多的图形丰富的应用程序开发.
轻量级与重量级是一个如何实现UI组件的问题.重量级组件包装操作系统对象,轻量级组件则不包含.它们严格地在JDK中实现.