简述 Java 图形用户界面设计 (Swing) - 学院 - CHINAUI.com 优艾网 - 中国人机界面设计门户网站
您的位置:首页 >> 学院 >> 交互技术 >> 简述 Java 图形用户界面设计 (Swing)
简述 Java 图形用户界面设计 (Swing)
来源:CSDN 作者:边城狂人 发布时间:2008-03-21
一. AWT 和 Swing
 
 AWT 和 Swing 是 Java 设计 GUI 用户界面的基础。与 AWT 的重量级组件不同,Swing 中大部分是轻量级组件。正是这个原因,Swing 几乎无所不能,不但有各式各样先进的组件,而且更为美观易用。所以一开始使用 AWT 的程序员很快就转向使用 Swing 了。
 
  那为什么 AWT 组件没有消亡呢?因为 Swing 是架构在 AWT 之上的,没有 AWT 就没有 Swing。所以程序员可以根据自己的习惯选择使用 AWT 或者是 Swing。但是,最好不要二者混用——除开显示风格不同不说,还很可能造成层次 (Z-Order) 错乱,比如下例: 
 
/*
 * AwtSwing.java
 * @author Fancy
 
*/


import java.awt.BorderLayout;
import java.awt.Button;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;

public final class AwtSwing {

    
public static void main(String[] args) {
        AwtSwing as 
= new AwtSwing();
        as.show();
    }


    JFrame frame 
= new JFrame("Test AWT and SWING");

    JDesktopPane jdp 
= new JDesktopPane();

    JInternalFrame jif1 
= new JInternalFrame("controls");

    JInternalFrame jif2 
= new JInternalFrame("cover");

    
public AwtSwing() {
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(jdp);

        jif1.setContentPane(
new JPanel());
        jif2.setContentPane(
new JPanel());

        jif1.getContentPane().setLayout(
new BorderLayout());
        jif1.getContentPane().add(
new Button("AWT Button"), BorderLayout.WEST);
        jif1.getContentPane().add(
new JButton("Swing Button"),
                BorderLayout.EAST);

        jif1.setSize(
200100);
        jif2.setSize(
200100);

        jdp.add(jif1);
        jdp.add(jif2);

        frame.setSize(
240140);
    }


    
public void show() {
        frame.setVisible(
true);
        jif1.setVisible(
true);
        jif2.setVisible(
true);
    }


}
 
  运行这个程序,并用鼠标拖动那个名为“cover”的子窗口,我们会发现一个非常有趣的现象,如图:
 
 
  显然 cover 子窗口是在 controls 子窗口之上的,但是它只罩盖住了 Swing Button,没有罩盖住 AWT Button。再看一会儿,你是不是有这样一种感觉:Swing Button 是“画”上去的,而 AWT Button 则是“贴”上去的。这就是二者混用造成层次错乱的一个例子。
 
  Swing 组件有美观、易用、组件量大等特点,也有缺点——使用 Swing 组件的程序通常会比使用 AWT 组件的程序运行更慢。但是大家都还是更喜欢用 Swing 组件,原因何在?因为随着计算机硬件的升级,一点点速度已经不是问题。相反的,用户更需要美观的用户界面,开发人员则更需要易用的开发组件。
 
相关阅读
推荐文章
热点文章