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很耗时,这样的任务处理很有效。
以上都是简单的介绍该框架,由于是第一次使用,还有可能有误,请大家在使用的时候指正。
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很耗时,这样的任务处理很有效。
以上都是简单的介绍该框架,由于是第一次使用,还有可能有误,请大家在使用的时候指正。
相关文章推荐
- JSP基本功 pageContext对象page,request,session,application四个域对象的使用及区别JSP运行原理和九大隐式对象及下载文件、访问次数的代码总结出el表达式简单
- 使用Swing Application FrameWork (Using Swing Application Framework)
- 在Eclipse中安装使用swing插件做Swing Application Framework
- Android使用Application总结
- [转]有关TinyXML使用的简单总结
- Android 使用Application总结
- C# WinForm CheckedListBox 使用的相关简单总结
- Android使用Application总结
- Swing应用程序框架(Swing Application Framework)API绪论(JSR-296)之一
- 使用CAB 建立Like Dnn 的桌面应用系统框架- window form application framework
- 用ant来打包简单的ejb(jboss)的总结 使用ant
- 最简单的Ogre系列之一——Ogre框架程序(不使用ExampleListener/Application)
- SQLite简单使用 总结
- [导入]Swing Application Framework + Swing Databinding 在NetBeans 6.0的Flash Demo
- org.springframework.context.ApplicationContextAware使用理解
- Swing 中卡片布局管理的简单使用
- Android使用Application总结
- UITabBarController的简单使用和属性方法总结
- 简单总结Unity使用Resources类资源管理
- iOS开发笔记之简单使用IJKMediaFramework实现视频直播