Swing
外观
Swing 是 Java 中的一个工具包,它提供了一种构建跨平台用户界面的方法。它是建立在 AWT 之上的,被设计为 AWT 的替代品,AWT 是 Java 内置的另一个 UI 工具包。SWT 是您可能听说过的第三个工具包。SWT 是一个开源工具包,它本身就是一个完整的主题,请参阅 SWT 的主页 以获取更多信息。
Swing[1] 提供了许多控件和窗口小部件来构建用户界面。Swing 类名通常以 J 开头,例如 JButton
、JList
、JFrame
。这主要是为了将它们与 AWT[2] 的对应类区分开来,并且通常是一对一替换。Swing 是基于轻量级组件的概念构建的,而 AWT 和 SWT 的概念是重量级组件。两者之间的区别在于,轻量级组件使用纯 Java 代码渲染(绘制),例如 drawLine 和 drawImage,而重量级组件使用本机操作系统来渲染组件。
Swing 中的一些组件实际上是重量级组件。顶级类及其所有派生类都是重量级组件,因为它们扩展了 AWT 版本。这是必要的,因为在 UI 的根部,父窗口需要由操作系统提供。这些顶级类包括 JWindow
、JFrame
、JDialog
和 JApplet
。所有要渲染到屏幕上的 Swing 组件都必须能够追踪到一个根窗口或这些类之一。
通常,将重量级组件与轻量级组件混合使用(除了前面提到的情况外)不是一个好主意,因为您会遇到分层问题,例如,应该出现在“顶部”的轻量级组件最终会被重量级组件遮挡。对此的一些例外情况包括使用重量级组件作为根窗格以及用于弹出窗口。一般来说,重量级组件将渲染在轻量级组件之上,并且不会与 Swing 中使用的外观和风格保持一致。有一些例外情况,但这是一个高级主题。真正喜欢冒险的人可能想要考虑阅读这篇来自 Sun 的关于混合重量级和轻量级组件的文章:文章。 |
那么使用 Swing 会给你带来什么呢?到目前为止,我们只讨论了组件和渲染。首先,你会得到以下内容。
- 控件:按钮、复选框、列表、树、表格、组合框(下拉列表)、菜单、文本字段
- 显示:标签、进度条、图标、工具提示
- 可插拔外观和风格 (PLAF):Windows、CDE/Motif、Mac。允许在不更改任何代码的情况下“美化”应用程序
由于 Sun、微软和苹果之间的法律问题,您只能在 Windows 上使用 Windows 外观和风格 (LAF),在苹果电脑上使用 Mac LAF |
- 标准顶级窗口:窗口、框架、对话框等。
- 事件监听器 API
- 键绑定和助记符:允许将键击映射到特定操作。
- ↑ Swing 也被错误地称为 JFC(Java 基础类),但是 JFC 包括除 Swing 之外的 API,例如 Java 2D 和拖放 API。
- ↑ AWT 是抽象窗口工具包,其中组件由本机操作系统渲染