什么是Swing 它和AWT比有什么优点 -
2021-06-17 18:05
Java Swing组件的特点:
1、Swing的实现是一个小型GUI框架,该框架无基本平台依赖性,而在AWT实现中却有依赖性。
2、javax.swing.JComponent类是所有Swing组件的基类。
3、Swing模型的目标是要遵循模型-视图-控制器体系结构。模型封装了数据和状态的底层表示。
4、javax.swing.plaf包提供了一个接口和许多抽象类用于定义可插入的外观框架。缺省的外观由javax.swing.plaf.basic包中的类实现。
swing是完全自绘控件
swt事先看看平台有没有控件,如果有 ,就用平台的,没有 在自己模拟
awt是直接用平台的,如果平台没有,就没法使用
swt集中了awt河swing的优点
个人认为:swing适合搞图形图像开发
swt是合作普通gui开发
java GUI程序开发的基础是AWT (Abstract Window Toolkit),它有个特点:窗口中的组件(按钮等)都是与操作系统对等组件相关的重量级组件,所以不够灵活。同时它的设计初衷是在Applet中用的。
Swing 是基于AWT之上的,它除了顶级组件是重量级的,其它的组件(如按钮、输入框等)和布局都是与操作系统无关的轻量级的。因此它有自已的Look and Feel。
SWT (Standard Widget Toolkit)是Eclipse项目中基于java 的另一套GUI编程接口。Eclipse本身就是基于此的。
当我们开始使用Swing库时,会注意到它在技术上向前迈出了巨大的一步。Swing组件是Bean,因此他们可以支持Bean的任何开发环境中使用。Swing提供了一个完全的UI组件集合。因为速度的关系,所有的组件都很小巧的(没有“重量级”组件被使用),Swing为了轻便在Java中整个被编写。
最重要的是我们会希望Swing被称为“正交使用”;一旦我们采用了这种关于库的普遍的办法我们就可以在任何地方应用它们。这主要是因为Bean的命名规则,大多数的时候在我编写这些程序例子时我可以猜到方法名并且第一次就将它拼写正确而无需查找任何事物。这无疑是优秀库设计的品质证明。另外,我们可以广泛地插入组件到其它的组件中并且事件会正常地工作。
键盘操作是自动被支持的——我们可以使用Swing应用程序而不需要鼠标,但我们不得不做一些额外的编程工作(老的AWT中需要一些可怕的代码以支持键盘操作)。滚动被毫不费力地支持——我们简单地将我们的组件到一个JScrollPane中,同样我们再增加它到我们的窗体中即可。其它的特征,例如工具提示条只需要一行单独的代码就可执行。
Swing同样支持一些被称为“可插入外观和效果”的事物,这就是说UI的外观可以在不同的平台和不同的操作系统上被动态地改变以符合用户的期望。它甚至可以创造我们自己的外观和效果。
AWT是Swing的基础。Swing的产生主要原因就是AWT不能满足图形化用户界面发展的需要。AWT设计的初衷是支持开发小应用程序的简单用户界面。例如AWT缺少剪贴板、打印支持、键盘导航等特性,而且原来的AWT甚至不包括弹出式菜单或滚动窗格等基本元素。
此外AWT还存在着严重的缺陷,人们使AWT适应基于继承的、具有很大伸缩性的事件模型,基于同位体的体系结构也成为其致命的弱点。
随着发展的需要,Swing出现了,Swing组件几乎都是轻量组件,与重量组件相比,没有本地的对等组件,不像重量组件要在它们自己的本地不透明窗体中绘制,轻量组件在它们的重量组件的窗口中绘制。
Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级( light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。
Swing采用了一种MVC的设计范式,即"模型-视图-控制"(Model-View-Controller),其中模型用来保存内容,视图用来显示内容,控制器用来控制用户输入。
在AWT组件中,由于控制组件外观的对等类与具体平台相关,使得AWT组件总是只有与本机相关的外观。Swing使得程序在一个平台上运行时能够有不同的外观。用户可以选择自己习惯的外观。