介绍AWT和Swing组件

开发 后端
本文介绍AWT和Swing组件,随着计算机硬件的升级,一点点速度已经不是问题。相反的,用户更需要美观的用户界面,开发人员则更需要易用的开发组件。

AWT和Swing 是 Java 设计 GUI 用户界面的基础。与 AWT 的重量级组件不同,Swing 中大部分是轻量级组件。正是这个原因,Swing 几乎无所不能,不但有各式各样先进的组件,而且更为美观易用。所以一开始使用 AWT 的程序员很快就转向使用 Swing 了。
 
那为什么 AWT 组件没有消亡呢?因为 Swing 是架构在 AWT 之上的,没有 AWT 就没有 Swing。所以程序员可以根据自己的习惯选择使用 AWT 或者是 Swing。但是,最好不要二者混用——除开显示风格不同不说,还很可能造成层次 (Z-Order) 错乱,比如下例:

  1. importjava.awt.BorderLayout;  
  2. importjava.awt.Button;  
  3.  
  4. importjavax.swing.JButton;  
  5. importjavax.swing.JDesktopPane;  
  6. importjavax.swing.JFrame;  
  7. importjavax.swing.JInternalFrame;  
  8. importjavax.swing.JPanel;  
  9.  
  10. publicfinalclassAwtSwing...{  
  11.  
  12. publicstaticvoidmain(String[]args)...{  
  13. AwtSwingas=newAwtSwing();  
  14. as.show();  
  15. }  
  16.  
  17. JFrameframe=newJFrame("TestAWTandSWING");  
  18.  
  19. JDesktopPanejdp=newJDesktopPane();  
  20.  
  21. JInternalFramejif1=newJInternalFrame("controls");  
  22.  
  23. JInternalFramejif2=newJInternalFrame("cover");  
  24.  
  25. publicAwtSwing()...{  
  26. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  27. frame.getContentPane().add(jdp);  
  28.  
  29. jif1.setContentPane(newJPanel());  
  30. jif2.setContentPane(newJPanel());  
  31.  
  32. jif1.getContentPane().setLayout(newBorderLayout());  
  33. jif1.getContentPane().add(newButton("AWTButton"),BorderLayout.WEST);  
  34. jif1.getContentPane().add(newJButton("SwingButton"),  
  35. BorderLayout.EAST);  
  36.  
  37. jif1.setSize(200,100);  
  38. jif2.setSize(200,100);  
  39.  
  40. jdp.add(jif1);  
  41. jdp.add(jif2);  
  42.  
  43. frame.setSize(240,140);  
  44. }  
  45.  
  46. publicvoidshow()...{  
  47. frame.setVisible(true);  
  48. jif1.setVisible(true);  
  49. jif2.setVisible(true);  
  50. }  
  51.  

运行这个程序,并用鼠标拖动那个名为“cover”的子窗口,我们会发现一个非常有趣的现象,如图:

Swing Button 是“画”上去的


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

【编辑推荐】

  1. Swing应用程序处理函数
  2. 浅谈SwingWorker的使用
  3. AWT,SWT和Swing的布局管理器与Look And Feel机制
  4. 概述SWT采用AWT和Swing的一些优点
  5. Swing组件的paint方法的处理流程
责任编辑:佚名 来源: 中国IT实验室
相关推荐

2009-07-10 17:03:17

AWT组件Swing组件

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-10 15:41:27

Swing AWT

2009-07-14 15:01:02

AWT和Swing

2009-07-10 17:20:38

Swing构件AWT构件

2009-07-15 16:39:51

AWT和Swing

2009-07-16 13:37:33

Swing和AWT

2009-07-16 13:50:28

AWT和Swing

2009-07-17 09:36:14

SWT和Swing的区

2009-07-17 10:11:55

AWT和Swing

2009-07-10 18:06:59

JTree Swing

2009-07-17 09:07:20

2009-07-17 14:38:51

轻量级Swing组件

2009-07-14 12:58:49

AWT和Swing

2009-07-17 10:01:14

Swing和AWT

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-14 13:49:28

Swing组件AWT

2009-07-17 10:25:41

AWT和SwingSWT

2009-07-17 09:55:02

事件监听器SWT和SwingAWT

2009-07-10 14:58:13

JLabel组件JFC和Swing
点赞
收藏

51CTO技术栈公众号