JFrame的重量如何?

时间:2014-06-04 03:25:13

标签: java swing jframe awt

JFrame是扩展框架。然后,JFrame如何轻量级但Frame是重量级的?

我红了article但是我仍然没有得到JFrame如何实现其轻量级属性?

我从here得到JFrame是重量级的,但其他以J *开头的组件是轻量级的。其他Swing组件如何实现这一目标。我需要一些技术细节。

3 个答案:

答案 0 :(得分:2)

从技术上讲,它不是。两者都是重量级组件,但因为JFrame已设置为支持JRootPane,其中包含内容窗格(可能还有)玻璃窗格(以及JMenuBar),所以考虑"轻量级",因为它被故意配置为支持轻量级组件

基本上JFrameJWindow已被修改为轻量级容器,支持轻量级组件

答案 1 :(得分:2)

它仍然是一个重量级组件,因为它(JFrame)继承自Frame.And它不属于JComponents,它是轻量级组件。

重量级意味着每个Java组件都有一个与之关联的本机对等体。本地对等体是特定于操作系统的组件... AWT是重量级的,所以如果你创建一个AWT按钮,在Windows平台上会创建一个MFC按钮,在* nix上创建一个Motif按钮,等等。

轻量级意味着没有与java组件关联的本机对等体。这是通过仅使顶级组件成为重量级并且将所有轻量级组件绘制到其上来完成的。 Swing轻巧。

当然,AWT和Swing特定于标准Java(J2SE)。在J2ME下,它取决于您使用的设备类型。如果你使用的是更强大的设备,比如Sharp Zaurus,那么你的AWT和功能非常接近J2SE级别。如果您使用的是具有Java功能的手机,那么您将无法获得功能齐全的GUI所需的所有功能,因此可以使用特殊的库来制作这些应用程序。您最需要查看设备制造商提供的API。

答案 2 :(得分:1)

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

它仍然是一个重量级组件,因为它(JFrame)继承自Frame。它不属于JComponents lightweight components