Swing的产生与优点(原创)

1.Swing与Awt的最大的区别:
Swing为急于窗体的GUI应用开发设计,为java跨平台特性提供了卓越的支持.它完全没有本地代码,不受操作系统的影响,做到了真正的跨平台应用,甚至能够提供本地窗口系统不支持的其它特性.因此比AWT具有更强的实用性,同时比AWT程序拥有更加精致的外观感受.
 
      AWT只提供基本的组件,使很多设计变得复杂,且无法在不同的平台下保持显示风格的一致性.例如:如果建立一个按钮Button对象,就会有一个按钮(ButtonPeer)同其对象一起被建立,然后此按钮对象会请求底层操作系统创建一个真正的按钮.即在Windows NT 上执行,那么创建的就是Windows NT按钮,Linux 上执行,那么创建的就是Linux按钮.因此AWT组件外观会受到底层操作系统的影响.
 
2.Swing的特点:
(1).Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级( light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。

(2).Swing采用了一种MVC的设计范式,即"模型-视图-控制"(Model-View-Controller),其中模型用来保存内容,视图用来显示内容,控制器用来控制用户输入。

(3).Swing外观感觉采用可插入的外观感觉(Pluggable Look and Feel,PL&F)
 
3. Swing的类层次结构

  在javax.swing包中,定义了两种类型的组件:顶层容器(JFrame,JApplet,JDialog和JWindow)和轻量级组件。Swing组件都是AWT的Container类的直接子类和间接子类。

  java.awt.Component
    -java.awt.Container
       -java.awt.Window
          -java.awt.Frame-javax.swing.JFrame
          -javax.Dialog-javax.swing.JDialog
          -javax.swing.JWindow
       -java.awt.Applet-javax.swing.JApplet
       -javax.swing.Box
       -javax.swing.Jcomponet

  Swing包是JFC(Java Foundation Classes)的一部分,由许多包组成


         描述
  Com.sum.swing.plaf.motif用户界面代表类,它们实现Motif界面样式  
Com.sum.java.swing.plaf.windows用户界面代表类,它们实现Windows界面样式
  Javax.swing  Swing组件和使用工具
  Javax.swing.border   Swing轻量组件的边框
  Javax.swing.colorchooser  JcolorChooser的支持类/接口
  Javax.swing.event  事件和侦听器类
  Javax.swing.filechooser  JFileChooser的支持类/接口
  Javax.swing.pending  未完全实现的Swing组件
  Javax.swing.plaf  抽象类,定义UI代表的行为
  Javax.swing.plaf.basic  实现所有标准界面样式公共功能的基类
  Javax.swing.plaf.metal用户界面代表类,它们实现Metal界面样式
  Javax.swing.table  Jtable组件
  Javax.swing.text  支持文档的显示和编辑
  Javax.swing.text.html  支持显示和编辑HTML文档
  Javax.swing.text.html.parser  Html文档的分析器
  Javax.swing.text.rtf  支持显示和编辑RTF文件
  Javax.swing.tree  Jtree组件的支持类
  Javax.swing.undo  支持取消操作


4.MVC(Model-View-Control)体系结构

  Model:存储组件数据的地方.如JCheckBox中的Model将存储所有选项的值,并以boolean的值来表示,而JTable的Model则会存储所有表格上的数据.

      View: 显示组件的外观.

     Controller:处理用户在组件上的操作,并将改变后的数据存储在Model中。

 

  为了简化组件的设计工作,在Swing组件中View和Controller两部分合为一体。每个组件有一个相关的分离模型和它使用的界面(包括视图和控件)。比如,按钮JButton有一个存储其状态的分离模型ButtonModel对象。组件的模型是自动设置的,例如一般都使用JButton 而不是使用ButtonModel 对象。另外,通过Model类的子类或通过实现适当的接口,可以为组件建立自己的模型。把数据模型与组件联系起来用setModel( )方法。

      Swing组件中的Model可以分成三类:

      (1).存储组件内将被用来操作的数据.

      (2).存储控制组件操作模式的数据

      (3).存储组件本身性质的数据模式



  MVC是现有的编程语言中制作图形用户界面的一种通用的思想,其思路是把数据的内容本身和显示方式分离开,这样就使得数据的显示更加灵活多样。比如,某年级各个班级的学生人数是数据,则显示方式是多种多样的,可以采用柱状图显示,也可以采用饼图显示,也可以采用直接的数据输出。因此在设计的时候,就考虑把数据和显示方式分开,对于实现多种多样的显示是非常有帮助的。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值