Swing Application Framework简单使用和总结

 
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很耗时,这样的任务处理很有效。
 
以上都是简单的介绍该框架,由于是第一次使用,还有可能有误,请大家在使用的时候指正。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值