swing

Javal.2 引入称为 Swing 的新的 GUI 组件库。Swing 是第二代 GUI 开发工具集，AWT 采用了与特定平台相关的实现，而绝大多数 Swing 组件却不是。Swing 是构筑在 AWT 上层的一组 GUI 组件的集合，为保证可移植性，它完全用 Java 语言编写和 AWT 相比，Swing 提供了更完整的组件，引入了许多新的特性和能力。Swing 提供更多的组件库，如：JTable，JTree，JComboBox。Swing 也增强了 AWT 中组件的功能，这些增强的组件在 Swing 中的名称通常都是在 AWT 组件名前增加了一个＂Ｊ＂字母，如 AWT 中的 Button 在 Swing 中是 JButton。

Swing 的结构图如图 1 所示：

图 1 Swing 结构图

## 基本Swing应用程序

目前在 Java 中，存在着两种图形工具包，即 AWT 和 Swing 。AWT 的出现较早，但存在着很多缺陷。事实上, AWT 中的大部分的图形元素在 Swing 中都有相应的实现，Swing 已经成为今天 Java 主要的图形界面的开发工具包。

目前的 Swing 类的主要的绘图方法被放在 javax.swing 包中。就是说，在用到 Swing 所提供的图形元素时必须包含 javax.swing 包。一个简单的 Swing 例子如下所示。

1. import java.awt.*;

2. import java.awt.event.*;

3. import javax.swing.*;

4. class MyFrame extends JFrame {

5. public MyFrame() {

6. // 设置窗口 MyFrame 的标题

7. setTitle("最简单的 swing 应用程序");

8. // 设置窗口大小为宽 300,高 200 像素

9. setSize(300, 200);

10. // 设置窗口位置

11. setLocation(100, 100);

12. // 增加窗口事件监听器

13. addWindowListener(new WindowAdapter() {

14. public void windowClosing(WindowEvent e) {

15. System.exit(0);

16. }

17. });

18. }

19. public static void main(String[] args){

20. // 建立一个窗口对象

21. JFrame frame = new MyFrame();

22. // 显示窗口

23. frame.setVisible(true);

24. }

25. }

上例显示了一个最简单的 swing 类型的应用程序，在屏幕上显示出一个空的窗口。

窗口是 Java 的一个底层窗口，可以放在其他窗口或者组件的下面。在 AWT 中用 Frame 类实现，在 swing 中相应的类叫做 JFrame 。Frame 是 java . awtcontainer 的子类，而 JFrame 又是 Frame 的子类。所以， JFrame 类也是一个容器(Container），可以放置其他的图形组件。在实际的图形应用程序的开发中，通常将窗口放在最底层，其余的组件放在上面。

有了窗口之后，就可以在上面显示信息或者添加图形组件。虽然可以直接在窗口上绘制信息，但不推荐这么做。因为 JFrame 的目的是为其他的组件提供一个容器。所以，应该将显示信息的功能放在其它的组件中实现。