在java中,JFrame是重量级组件还是轻量级组件?

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

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

但我听说Swing仍然基于AWT,甚至Swing组件也必须至少有一个重量级容器。 换句话说,JFrame,JApplet不是轻量级的。这是真的吗? 找出你的理由?

JFrame是重量级的,因为在大多数操作系统中创建任务视图级窗口是不可能的,而不会创建“重”的AWT窗口。 轻量级组件可以用不需要JNI调用的基于java的东西替换内部小部件,但Windows是特殊情况。 但是,JFrame确实允许您进行自定义渲染。 此外,如果你正在使用其他轻量级的东西,那么我建议使用JFrame,因为它使渲染比混合轻型和重型组件更有效。