0

GUI 如何在操作系统中构建。让我们用两个例子,比如说 Ubuntu 中的 GTK+ 和 Java JFrame。我认为使用某种图形用户界面的操作系统必须提供一些系统调用才能显示窗口。因此,例如,如果我在一台机器上安装了一个版本的 Ubuntu,而无需下载任何软件,我应该能够进行系统调用来显示一个窗口。似乎情况并非如此。我必须安装和下载适用于 GTK+ 的 SDK,它允许我创建带有按钮等的窗口。那么我的问题是 Java,然后 Java 如何构建它的 JFrames?我知道有一个 Java 虚拟机运行在 Linux 系统之上,但是 Java 虚拟机是如何调用来实际显示窗口的呢?与 GUI 一起出现的是用户与之交互的事件。在 Java 级别,JVM 处理所有较低级别的调用,并且您会收到 OnClick() 事件等。JVM 是如何实际调用和处理这些调用的?与 GDK+ 一样吗?我知道这是一个广泛的问题,有许多不同的答案,但我们将不胜感激任何帮助。

4

1 回答 1

2

我们以 Linux 为例。有几个层次:

  • 内核 (Linux) 和操作系统 (GNU) - 知道如何使用硬件,包括图形。
  • 窗口系统 (X) - 使用图形函数绘制窗口。
  • 桌面(例如 Gnome) - 应用全局样式,例如窗口边框。
  • (通常)诸如 GTK 之类的工具包 - 了解小部件、如何绘制它们以及如何设置它们的样式。
  • 你的申请。

在 Windows 上,内核、操作系统、窗口系统、桌面和小部件都捆绑在一起。在这种情况下,工具包可能不会绘制自己的小部件,而是直接从 Windows 中使用它们。

在任何情况下,该工具包都会将您的应用程序与特定于平台的细节隔离开来,并自动执行正确的操作。

于 2012-09-06T10:49:07.913 回答