Java如何制作窗口?

时间:2009-08-22 02:56:06

标签: java user-interface standard-library

JVM如何制作它的窗口,我知道它有jar文件和可执行文件等... 我想知道的是用桌面应用程序围绕框架创建窗口的确切程度。

它是安装在它的机器上的图形库标准吗?

3 个答案:

答案 0 :(得分:7)

Java中有两种类型的UI组件:重量级和轻量级。

重量级组件是操作系统中存在的东西的包装器。 Windows作为操作系统具有创建窗口,对话框等的方法。

使用2D绘图API等在应用程序内完全创建轻量级组件。操作系统对此一无所知。

两个“官方”Java GUI API是Swing和AWT。 AWT通常由applet使用(无论如何都是早期的)。它由重量级组件组成。 Swing建立在AWT之上,但是用于设计通常桌面应用程序的API更为广泛。大多数Swing组件都是轻量级的。

因此,Java桌面应用程序可能包含一个或多个重量级组件,可能包含一些轻量级组件。或者,如果2D绘图API足以“伪造”没有重量级组件的Windows,它可能是所有轻量级组件。 / p>

您在Java应用程序周围看到的框架可能会使用Java2D这样的库(直接或通过使用该API或类似API的组件)绘制它们,或者它可能由Windows创建,并且可能受应用程序的配置影响,可能受到操作系统的主题和显示设置。

现在大多数Java应用程序都是轻量级的。

答案 1 :(得分:0)

默认情况下,基础窗口系统将绘制java.awt.Framejavax.swing.JFrame(或等效项)。最近(2002),1.4介绍了Frame.setUndecorated和相关方法。这允许将帧绘制为未修饰的窗口(如Window所做的那样)并且某些PL& F(例如Metal)可以绘制功能帧而不是委托给窗口系统。这个功能显然是为了让整个窗口具有相同的外观和感觉。据我所知,旨在复制本机窗口系统的Sun外观实现并未实现此功能。

答案 2 :(得分:0)

只是为了完成:在Windows系统的本机实现之上还有SWT哪个瘦Java层。有点像AWT重做。它由Eclipse项目使用。应该提供与原生L& F更接近的匹配,更快的渲染 - 但是YMMV。

SWT的缺点是您必须学习其他API,并且所有目标平台上的库都必须可用。例如,直到最近,OS-X版本相当不完整且过时(碳,而不是基于Cocoa)。