经典笑话,爆笑笑话,男女笑话,冷笑话-幽默笑话集

幽默笑话网 > 经典文章 >

一篇经典的 介绍netbeans中swing 应用程序框架的文章(4)

一篇经典的 介绍netbeans中swing 应用程序框架的文章

一篇经典的 介绍netbeans中swing 应用程序框架的文章


一篇经典的 介绍netbeans中swing 应用程序框架的文章

 

自此环境相关的按钮就做完了,我们可以运行代码试试。

从上面的例子中我们看到,做这个例子真正只写了一行代码:

 

一篇经典的 介绍netbeans中swing 应用程序框架的文章

setHasSelect( ((JCheckBox)evt.getSource()).isSelected());

 

其它都是通过IDE生成的,多亏IDESAFAction我们才能如此高效的制作程序。

l         菜单和按钮关联

菜单和按钮经常表现为同一个行为,我们当然可以各自实现它,但是这样就产生了冗余

编写程序最总要的一点就是不要重复代码。在Design模式下右键单击相应的菜单,在Set Action…操作里面选择相应Action

这样菜单和按钮就关联起来了,该菜单和按钮行为相同,SAF如此简单的为我们完成了任务。

这又是Action解决了一大问题

l         Background Task

刚才在制作环境相关的按钮时,我们忽略一个选项

一篇经典的 介绍netbeans中swing 应用程序框架的文章

现在我们来介绍这个非常重要的特性

以前人们不断抱怨Swing是如何慢,其实JRE1.5后,特别是1.6后Swing性能已经完全不是问题,问题是开发Swing的程序员没有处理好Swing的线程问题,比如本该在后台运行的任务却直接写在Swing中,造成Swing程序相应缓慢。

在以前你要非常熟练Swing和小心才能写出高质量的Swing程序来,但是现在你利用SAF提供的框架支持,处理后台任务变得非常容易。

我们 Set Action 的时候把Background Task选项选中,最后看一下IDE给我们生成了什么代码:

原来的代码:

 

一篇经典的 介绍netbeans中swing 应用程序框架的文章


一篇经典的 介绍netbeans中swing 应用程序框架的文章

Background Task选项选中后为如下代码:

 

一篇经典的 介绍netbeans中swing 应用程序框架的文章


一篇经典的 介绍netbeans中swing 应用程序框架的文章


一篇经典的 介绍netbeans中swing 应用程序框架的文章

}

一篇经典的 介绍netbeans中swing 应用程序框架的文章

可以看到,actionMethodName()方法里运行的代码将在一个新线程中运行

如果你要彻底明白上面的代码和EDT是什么概念,请浏览下面的博客地址

中有关Swing部分。

如果您懒得浏览,那么请遵循下面的建议

1、在ActionMethodNameTask构造器中

代码运行在EDT(事件分派进程)中,在这里复制doInBackground() 方法中所需要的GUI 的状态或参数到ActionMethodNameTask的成员变量中。

    2、doInBackground()方法中,不要存放处理GUI界面的代码,该方法返回的值将自动传到后面succeeded(Object Result)中

    3、succeeded()运行在EDT中,任务成功的执行后才执行该方法,该方法主要收集doInBackground()方法运行后的结果以用来更新GUI程序。

我们做一下试验,为ActionMethodNameTask增加一些代码:

 

一篇经典的 介绍netbeans中swing 应用程序框架的文章


一篇经典的 介绍netbeans中swing 应用程序框架的文章


一篇经典的 介绍netbeans中swing 应用程序框架的文章

    }

一篇经典的 介绍netbeans中swing 应用程序框架的文章

运行程序后点击按钮

任务开始:


一篇经典的 介绍netbeans中swing 应用程序框架的文章

任务结束:

一篇经典的 介绍netbeans中swing 应用程序框架的文章

注意提示信息只显示一定时间,这个时间可以自己设定,一定时间后信息自动消失。

l         制作阻塞按钮

一篇经典的 介绍netbeans中swing 应用程序框架的文章

我经常要做具有阻塞功能的按钮,比如我们按一下按钮,就跳出如上对话框,程序在后台运行任务,但是我们不能进行其它操作,除非我们点击取消按钮。

制作这样的按钮,其实非常简单:

在Set Action...进行如下设置就可以了

 

一篇经典的 介绍netbeans中swing 应用程序框架的文章

Blocking Type 可以选择NONE,ACTION,COMPONENT,WINDOW,APPLICATION指定阻塞的范围空间,你可以自己尝试一下,效果是怎样的。

从上面几个小例子可以看到引入@Action巨大好处了吧。



国际化支持

正如开始所说的,SAF本身就很好的支持了国际化,再加上NetBeans辅助,国际化简直易如反掌。

我们知道一些企业框架比如StructsJSF是通过后缀名为properties的文件保存相关资源的。

SAF也是,我们看看IDE为我们生成的properties文件

一篇经典的 介绍netbeans中swing 应用程序框架的文章

从上图可以看出,

FooApp.java

FooAboutBox.java

FooView.java

 

这三个类在foo.resources包分别对应有后缀名为properties的文件

FooApp. properties

FooAboutBox. properties

FooView. Properties

 

也就是说,类里面用到文字资源,图像资源集中放到了一起。这样国际化就相当简单了

这时也许你会说,一开始就写properties的文件,岂不是很麻烦?

别忘了,我们NetBeans的支持,做这个工作几乎不费你任何力气

一篇经典的 介绍netbeans中swing 应用程序框架的文章

(责任编辑:幽默笑话网)