Swing
外观
(重定向自 Java Programming/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),在 Apple 计算机上使用 Mac LAF |
- 标准顶级窗口:窗口、框架、对话框等
- 事件监听器 API
- 键绑定和助记符:允许将按键映射到特定操作。
- ↑ Swing 也被错误地称为 JFC(Java 基础类),但是 JFC 除了 Swing 之外还包括 API,例如 Java 2D 和拖放 API。
- ↑ AWT 是抽象窗口工具包,其中组件由本地操作系统渲染