AWT 组件具有平台相关性,它是系统对等类的实现。而 Swing 组件在不同平台具有一致性的表现,另外还可以提供本地系统不支持的一些特征,因此 Swing 比 AWT 的组件实用性更强。Swing 采用了 MVC(Model-View-Controller,即模型-视图-控制)设计模式。
(1)组件的多样化
Swing
的基础是 AWT,它提供了比 AWT 更多的图形界面组件。Swing 组件的类名都是以字母”J“开头, 除AWT
具有的基本组件(按钮JButton、标签JLabel、复选框JCheckBox、菜单JMenu)外,还增加了许多比较复杂的高级组件,例如表格
(JTable)、树(JTree)
(2)MVC模式
Swing 比较突出的特点在于 MVC 模型的普遍实用性。MVC
模型主要包括 3
部分结构:模型、视图和控制器。模型(Model)用于保存所用到的数据;视图(View)用于显示数据内容;控制器(Controller)用于处理用
户和模块交互事件。当模型的数据改变,会通知与之相关的视图,视图通过控制器指定相应机制。为了简化工作,Swing
组件将视图和控制器合二为一。MVC 设计思想是图形用户界面设计比较通用,这样可以使内容本身和显示方式分离,使数据显示更加灵活多变。
(3)可存取性支持
为了实现可存取性的支持,所有 Swing 组件实现了 Accessible 接口,这样一些辅助功能(屏幕阅读器)也可以得到实现。
(4)支持键盘操作
JComponent 类的 registerKeyboardAction()方法可以实现用键盘操作代替用户鼠标操作,相当于传统意义的热键操作。
(5)设置边框
Swing 组件可以设置一个或者多个边框,并且提供多种类型的边框供用户选择,甚至用户可以建立组合边框或自己设计边框。另外空白边框可以使组件变大,协助布局管理器布局。
(6)使用图标
Swing 组件另外一个更加丰富的功能就是许多组件可以通过图标修饰自己。