介绍AWT和Swing组件
创始人
2024-04-17 04:20:15
0

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方法的处理流程

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...