Swing是JDK自带的图形界面库,在很多年前Swing曾经广泛用于企业级系统客户端,不过如今在企业级管理系统领域,客户端-服务器模式(C/S)已被浏览器-服务器模式(B/S)端取代。如今,仅有部分专业领域软件使用Swing开发,如Eclipse、Matlab(GUI部分)等。
那么学习Swing有什么用呢?网上很多人说学习Swing没用,直接学某Web框架即可,我想说那些人根本不热爱编程,也不喜欢思考。Swing尽管使用场景比较少了,但是它依然是一个设计良好、有很大学习价值的框架。编程是用来解决问题的,先不提操作系统、编译原理这些理论性强的东西,就我们常用的应用软件来说,除了Web应用还有桌面应用、游戏等等。我们学习任何框架,除了满足业务需求外,最重要的是学习这个框架设计的思想,这种思想是可以用到任何领域、任何语言的。
除了Swing外,Java领域还有一个更现代的GUI框架JavaFX,将在其他章节中介绍。
JDK中实际上还有一个比Swing更古老的AWT库,AWT是基于窗口对等体实现的GUI界面,因此有不同平台下表现不同的缺点,而且为了控件的兼容性,不得不保持控件在一个所有平台的最大公约数上,就这很影响跨平台实现。
由于AWT的诸多缺点Swing产生了,Swing不使用窗口对等体而是采用重新绘制,因此不依赖于特定平台的窗体控件,具有良好的跨平台性。
这里要注意一个历史遗留问题,由于Swing是在AWT之上开发的,例如Swing的JFrame
继承了AWT的Frame
。使用Swing的过程中,也同样要使用到AWT包的API。
下图展示了Swing中关键组件的继承层次。