您的位置:首页 > 移动开发

Swing Application Framework简单使用和总结

2007-11-12 10:00 363 查看
SAF能做什么?
1. 管理窗口的启动和关闭,对整个窗体进行管理。其中继承SingleFrameApplication类就不需要手动设置窗体的位置和大小,程序会自动记住上次打开窗体的位置和大小。如果需要手动设置窗体的屏幕位置或大小,就继承application类即可。
使用SAF框架的方案1




使用SAF框架的方案2



以上2种方案都在屏幕中间显示一个窗体,显示为“Hello World”,但第二种更为简单,第二种方案能记忆住前一次窗口移动的位置和大小,SingleFrameApplication本身也是Application的子类。其中的ExitListener可以处理窗口关闭时的动作。

2. 对资源文件的支持。其中一个类的资源文件(包括图片,文本等)放置位置为该类所在文件夹下的resources下,其中资源文件名格式为:类名.properties.
可以理解为:一个包下含有一个resources文件夹,这个包下的所有java文件调用的资源文件都来自这个resources文件夹下。
程序怎么和资源文件打交道?
Demo1.java:



resources/Demo1.properties
demolable.text = this is SAF demo

以上简单的通过例子说明程序如何和资源文件结合。程序最后会显示一个窗体,窗体的内容为“this is SAF demo”。
从资源文件里初始化类中的变量怎么做呢?



resources/Demo1.properties
Application.id = Demo1
Demo1.value = 30

以上就是类中变量value,在资源文件中被初始化为30。程序显示结果为窗体中显示
value 30

3. action的支持。需要给窗体中的按钮增加事件,传统的有2种方式。
传统方式1:



传统方式2:



以上两种方式,通过以下代码增加到按钮上:
JButton jb = new JButton("do");
jb.addActionListener(new MyButtonAction());

那么使用SAF框架后,怎么实现按钮的动作?



以上就定义一个action,和上面2种传统方式的功能都是一样,可以看出这样更简洁。可以通过以下代码增加到按钮上:



可以看出,所有的按钮都可以通过这样的方式来实现action的绑定。使用了元数据的方式(@action)。
通过这样方式,我们可以把所有的action写在一个包中。当前按钮组件和action不在一个类中时,假设action在AllAction类中,使用:
getContext().getActionMap(AllAction.class, new AllAction())
得到一个ActionMap对象,就可以使用了。
或者使用以下方式:
ResourceMap resource = ctxt.getResourceMap(AllAction.class);
resource.injectComponents(this);
ActionMap map = ctxt.getActionMap(this);

4.对任务/线程的支持。通过该框架,可以很方面的实现后台运行action,不会使GUI窗口变成假死现象。需要说明的是,该框架官方网站提供的标准包在这个类上有点问题,需要使用修正后的包。
一个简单的例子:



以下MyTask.java



该例子显示为窗体中只有一个按钮,当点击这个按钮,3秒后控制台打印出字符。如果这个action很耗时,这样的任务处理很有效。

以上都是简单的介绍该框架,由于是第一次使用,还有可能有误,请大家在使用的时候指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: