1. Swing概述:
1) Swing采用100%纯Java实现,因此彻底与平台无关,这种不依赖平台的GUI成为轻量级GUI,而和平台有关的AWT则是重量级GUI;
2) 由于不依赖平台,因此无需像AWT那样组件要取各平台的交集,Swing提供大量丰富、复杂的组件;
3) 同样由于不依赖平台,因此不会出现和平台相关的Bug,这是从AWT到Swing的一个重大的跨越;
4) 在各平台上运行具有相同的图形界面;
5) 所有Swing组件的实现都采用MVC设计模式,其显示逻辑和数据逻辑是完全分离的,强制用户在编写Swing时组件的使用绝对安全合理;
6) Swing最大的缺点就是速度慢,因为它不再调用本地的API,而用纯Java代码绘制图形,但相对于硬件速度的发展,这种差距会逐渐减小,当要进行跨平台GUI开发时Swing仍然是不二之选;
7) Swing具有大量的可选外观:
i. 即Swing组件的外观风格,通俗地讲就是皮肤了;
ii. 在Swing中叫做LAF,即Look And Feel;
iii. 要获取当前JRE中所安装的所有LAF可以借助UIManager的方法遍历:
for (UIManager.LookAndFeelInfo info: UIManager.getInstalledLookAndFeels()) {
System.out.println(info);
}
iv. 其中最常用的就是Metal和Nimbus,前者吸收了Mac的风格,很美观,后者更加美观;
v. 在网上还有大量Swing爱好者提供了各种开源的LAF,可以下载使用;