在此,我无意讨论SWT与Swing孰优孰劣,你要是真的对这个感兴趣,能够到williamchen的博客里的Swing专栏看看,该专栏博主已经对SWT和Swing分析得很是透彻:html
http://blog.sina.com.cn/swingjavajava
Swing在1998 年底做为Java 2的一部分发布了1.0,可是当时发布的版本不论是性能仍是外观都足以使人失望。虽然当时Swing小组的工程师使用了最前沿的技术,如设计模式,可是时 的Swing小组已经被性能、本地化外观一致性问题以及许多错误深深陷住了,这些问题几乎把整个项目拖垮。程序员
幸好,Swing小组坚持了下来,要否则今天咱们就不会看到像NetBeans这样的IDE了。自从JDK1.5后,Java的性能已经有了巨大的改观,如今1.6下,Swing的性能已经彻底不是问题。数据库
那么Swing的优点有那些呢?设计模式
l 优秀的设计,正如刚才所说的,Swing从九十年代中期开始设计就用了当时最前沿的开发方法学。能够说Swing在当今各类GUI库中,设计是很是优雅的。app
l 轻量级框架
l 官方的存在JRE中,发布程序不须要像SWT那样还要捆绑本身的GUI库异步
l 真正的平台独立,Swing组件由Java 2D绘制编辑器
l 轻易的更改面观模式ide
l 强大的IDE支持,如今用NetBeans作界面,几乎不用你敲一行代码。
l Swing如今又多了一个杀手级框架Swing Application Framework (JSR 296)
下面开始个人第二篇Java博客
Swing Application Framework(如下简称SAF)致力于简化Swing应用程序的开发,框架定义了对大多数桌面应用程序的共有的基础设施:
l 应用程序生命周期管理,特别是GUI的启动和关闭。
l 对资源管理和载入的支持,这些资源是字符串,格式化的消息,图像,颜色,字体以及桌面应用程序共有的其余类型的资源。
l 对动做定义,管理和绑定的支持,其中包含了异步运行的动做(在后台运行)。
l 持久化会话状态:支持自动地,有选择地保存应用程序一次运行到下次运行的GUI状态。好比顶层的窗口几何位置。
SAF已经定义了大多数桌面应用程序的基础设施,咱们能够更方便的开发Swing程序了,可是手动编码开发GUI仍是让不少人抓狂。能不能提供一个像VB同样的环境,让程序员更加专一于功能的实现而不是界面的实现?答案是确定的,NetBeans 6.0就为开发SAF提供了这样一个环境,甚至比VB还要作得更好。
那么到底NetBeans6.0为SAF提供了什么样的优点呢?
l 生成基础框架,没必要每次新建立一个程序的时候都从头开始
l 唾手可得的国际化支持,在Netbeans里对SAF程序国际化,简单得不能再简单
l 拥有Swing世界里的明星级UI设计工具模块Matisse提供的免费大餐
l 用NetBeans开发SAF,意味着你还可使用Beans Binding(JSR 295),数据绑定将问题变得更简单
用NetBeans 6.0开发基于SAF,其实不用明白SAF,主要遵循必定的开发原则也能够开发出稳定高效的SAF程序来
可是为了你更深刻的理解SAF,强烈建议看下面的文章
l Using the Swing Application Framework (JSR 296)
http://java.sun.com/developer/technicalArticles/javase/swingappfr/
l Swing应用程序框架(Swing Application Framework)API绪论(JSR-296)之一
http://www.javaeye.com/topic/81326
Swing应用程序框架(Swing Application Framework)API绪论(JSR-296)之二
http://www.javaeye.com/topic/81327
l 若是你有更多的时间,那么请看下面网址有关Swing的部分
http://blog.sina.com.cn/swingjava
JDK1.6或以上版本
NetBeans6.0或以上版本
提示:Netbeans 网站上提供有六种捆绑包下载
l Web & Java EE
l Mobility
l Java SE
l Ruby
l C/C++
l All
开发Swing Application Framework只须要Java SE下载包就好了
这样能真正发挥NetBeans的性能!
咱们新建一个项目,从Java种类里选择 Java Desktop Application,以下图
点击下一步,接着输入项目名称、项目存放地址和程序的主类
在Choose Application Shell里面咱们选择Basic Application,单击完成
提示:咱们若是建立基于Swing的数据库程序,那么选择BataBase Application将提供极大的便利。可是在这里我只是介绍Basic Application,也就是如今咱们用SAF开发普通的桌面程序。
l META-INF/services目录
该目录通常存在一个JAR包里面
META-INF/services目录涉及一个模式:服务提供者模式
引入该模式通常是为了程序松散耦合,并且是IoC(控制反转)的另外一种实现方式
服务提供者模式通常有两个角色
² 服务 :通常为一个抽象类
² 服务提供者 :抽象类的实现
存在META-INF/services目录的JAR包通常为一个“服务提供者”
用NetBeans开发中小型程序不须要服务提供者概念,若是你要深刻理解
能够Baidu或Google一下META-INF/services
l foo包
foo包是咱们建立程序的主类foo.FooApp时,NetBeans自动为咱们生成的,
咱们来看看NetBeans为咱们生成了什么基础框架类:
1、FooApp.java
FooApp.java里面的代码是NetBean为咱们生成的,开发简单的程序这里基本上不须要更改什么。
2、FooAboutBox.java
每一个程序都应该有一个关于界面,Netbeans为咱们生成了关于的模板
修改相应文字就能够了,固然也能够本身作个About界面
3、FooView.java
FooView.java是程序View部分的关键,因为生成的代码比较多
在解释代码以前,我先看看Design部分
NetBenas给咱们生成的框架很是简单明了
须要注意的是图上标识的两个地方
标有1的地区为消息地区,咱们的程序完成任务后,在这里提示消息
标有2的地区为任务进度条,程序执行任务时在这里现实任务进度,固然任务有肯定模式和不肯定模式,不肯定模式的进度条持续地显示动画来表示正进行的操做。
接下来咱们看看FooView.java的构造器的代码: