IBM教育学院软件人才实训平台2009版

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 的目的是为其他的组件提供一个容器。所以，应该将显示信息的功能放在其它的组件中实现。