Swing组件都扩展自JComponent

开发 后端
本文介绍Swing组件都扩展自JComponent,以及介绍不论是AWT模式还是Swing模式,Sun的GUI开发思路都是纯OO的。

Sun在JDK 1.0最初发布了图形API包,代号AWT (abstract windowing toolkit),里面除对GUI基本支持(如结合各OS的事件分发机制等)外,自有一套重量级开发GUI的思路,并提供了一组常规使用的重量级组件。所谓重量级组件就是每个组件都引用一个本地对等体peer成员对象,这个对等体对象利用本地系统GUI API绘制组件。后来在JDK1.1,AWT包中引进了一套轻量级开发GUI的新思路,并提供了一组轻量级组件。所谓轻量级组件就是自身没有本地对等体,而借助重量级组件作为容器来绘制组件。JDK 1.1之后,sun在开发GUI思路上,在效率,扩展性等方面给出了很多创新,并基于这种新思路推出一套丰富的新组件(轻量级组件),sun为此打出一个新的响亮的代号---Swing,并推荐以后的GUI开发都应该基于Swing的GUI开发思路开展,应该使用或扩展这套Swing组件。

不论是AWT模式还是Swing模式,Sun的GUI开发思路都是纯OO的。开发人员总是构建多个组件对象实例来组合建立GUI,这些对象是因不同的输入输出表现被封装为多种组件类的实例,而这些组件类是有合理的继承关系因而容易扩展的“套件”。而且两种模式最基本的统一的程序运行思路都是:

1.通过建立各种组件的实例来负责GUI的工作。

2.约定出GUI变化时机—java应用程序随需发出请求调用或对操作系统级某种操作的监听(如暴露被遮挡的窗口内容)。

3. 在时机到来时由“框架程序”来判断并调用应该调用的目标组件实例所提供的各种形式的paint方法(各组件在此方法里通过java 2d API包来实现自己的具体绘制逻辑)来完成各组件绘制。

4. 在GUI的整个生命周期里,通过以上的123模式来完成整个应用界面的随需而变。

Swing式开发GUI的基本约定包括:Swing提供4个顶层容器JFrame,JDialog,JApplet,JWindow,如果是桌面应用,则GUI必须要有一个JFrame,如果是浏览器应用,则GUI必须要有一个JApplet。其他Swing组件,或自定义开发的Swing组件都扩展自JComponent,并且其实例要存在于顶层容器的层次树中。下面是一个符合约定的GUI的运行分析。

  1. importjavax.swing.JFrame;  
  2. importjavax.swing.JLabel;  
  3. publicclassBasicSwing{  
  4. publicstaticvoidmain(String[]args){  
  5. javax.swing.SwingUtilities.invokeLater(newRunnable(){  
  6. publicvoidrun(){  
  7. createAndShowGUI();  
  8. }  
  9. privatevoidcreateAndShowGUI(){  
  10. JFrameframe=newJFrame("BasicSwing");  
  11. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  12. JLabellabel=newJLabel("helloworld");  
  13. frame.getContentPane().add(label);  
  14. frame.setSize(100,200);  
  15. frame.setVisible(true);  
  16. }  
  17. });  
  18. }  

【编辑推荐】

  1. 概述Swing核心组件
  2. 浅谈NetBeans开发Swing
  3. Swing模式就是走RepaintManager的方式
  4. 浅析Swing Image的转换
  5. 介绍AWT和Swing组件
责任编辑:佚名 来源: 艾瑞网
相关推荐

2009-07-10 18:06:59

JTree Swing

2009-07-17 12:54:13

2009-07-15 13:06:38

Swing组件

2009-07-17 14:38:51

轻量级Swing组件

2009-07-10 17:03:17

AWT组件Swing组件

2009-07-10 16:29:32

Swing组件

2009-07-14 18:05:28

轻量级Swing组件

2009-07-10 12:30:12

Swing组件

2009-07-14 17:21:42

Swing组件

2009-07-15 11:02:32

Swing组件

2009-07-17 11:13:46

AWT和SwingSwing组件

2009-07-10 13:20:37

Swing容器组件

2009-07-17 16:19:16

Swing核心组件

2009-07-10 10:19:57

JFormattedTSwing

2012-01-17 13:16:34

JavaSwing

2009-07-16 11:19:48

外部线程Swing组件

2009-07-16 16:46:39

Swing窗体

2009-07-10 10:08:59

Spinner ModSwing组件

2009-07-10 14:58:13

JLabel组件JFC和Swing

2009-07-15 10:52:13

JTree组件
点赞
收藏

51CTO技术栈公众号