12.2.2 AWT组件的Swing实现
12.2.2 AWT组件的Swing实现
从图121中可以看出,Swing
为除Canvas
之外的所有AWT
组件提供了相应的实现,Swing
组件比AWT
组件的功能更加强大。相对于AWT
组件,Swing
组件具有如下4个额外的功能。
- 可以为
Swing
组件设置提示信息。使用setToolTipText()
方法,为组件设置对用户有帮助的提示信息。 - 很多
Swing
组件如按钮、标签、菜单项等,除使用文字外,还可以使用图标修饰自己。为了允许在Swing
组件中使用图标,Swing
为Icon
接囗提供了一个实现类:ImageIcon
,该实现类代表个图像图标。 - 支持插拔式的外观风格。每个
JComponent
对象都有一个相应的ComponentUI
对象,为它完成所有的绘画、事件处理、决定尺寸大小等工作。ComponentUI
对象依赖当前使用的PLAF
,使用UIManager.SetLookAndFeel()
方法可以改变图形界面的外观风格。 - 支持设置边框。
Swing
组件可以设置一个或多个边框。Swing
中提供了各式各样的边框供用户选用,也能建立组合边框或自己设计边框。一种空白边框可以用于增大组件,同时协助布局管理器对容器中的组件进行合理的布局。
UI代理类
每个Swing
组件都有一个对应的UI
类,例如JButton
组件就有一个对应的ButtonUI
类来作为UI
代理。每个Swing
组件的UI
代理的类名总是将该Swing
组件类名的J去掉,然后在后面添加UI
后缀。UI
代理类通常是一个抽象基类,不同的PLAF
会有不同的UI
代理实现类。Swing
类库中包含了几套UI
代理,每套UI
代理都几乎包含了所有Swing
组件的Component
实现,每套这样的实现都被称为种PLAF
实现。以JButton
为例,其UI
代理的继承层次如图12.2所示。
如果需要改变程序的外观风格,则可以使用如下代码。
1 | try{ |
程序 Swing窗口
下面程序示范了使用Swing
组件来创建窗口应用,该窗口里包含了菜单、右键菜单以及基本AWT
组件的Swing
实现。