- 浏览: 258625 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (97)
- Java (28)
- .Net (1)
- Ruby & Rails (4)
- Review (0)
- AJAX (3)
- Architecture (0)
- Database (1)
- Design Patterns (0)
- IT News (0)
- Java EE (1)
- Java SE (0)
- Reviews (1)
- Software Engineering (6)
- Python & Jython (1)
- OGSi (0)
- Fortran (2)
- Groovy & Grails (1)
- C/C++ (1)
- Miscellaneous (6)
- Linux (6)
- Java Script (0)
- CSS (0)
- PHP (1)
- C# (0)
最新评论
-
zhangyou1010:
看看人家CSDN多NB, 在线调试程序 -
hxcan:
非常感谢。
Photran--一个FORTRAN语言的IDE -
kimmking:
lewhwa 写道看看人家CSDN多NB, 首页在线调试
程序 ...
看看人家CSDN多NB, 在线调试程序 -
codeutil:
csdn不是asp.net写的了?
看看人家CSDN多NB, 在线调试程序 -
wsc830719:
1G内存就足够了! 我用的神舟本,cm1.86G处理器,后来加 ...
NetBeans 7.0 ML使用印象
用 @Action 标注定义动作
@Action标注打算作为Action的actionPerformed方法的方法。ApplicationContext.getActionMap方法建立了包含由某些类定义的每个@Action的Action对象的ActionMap。ActionMap将父类链接起来,并且每个Application的子类都有父类。这样,所有的应用程序继承了从Application基类定义的cut,copy,paste,delete和quit动作。
SingleFrameExample4.java定义了两个@Actions,open和close:
* Load the specified file into the textPane or popup an error
* dialog if something goes wrong.
*/
@Action public void open() {
JFileChooser chooser = new JFileChooser();
int option = chooser.showOpenDialog(getMainFrame());
if (option == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
textPane.setPage(file.toURI().toURL());
// error handling omitted for clarity
}
}
/**
* Replace the contents of the textPane with the value of the
* "defaultText" resource.
*/
@Action public void close() {
ApplicationContext ac = ApplicationContext.getInstance();
String ac.getResourceMap(getClass()).getString("defaultText");
textPane.setText(defaultText);
}
使用ApplicationContext的getActionMap方法来建立包含open和close的ActionMap。为了简化查询,通过建立一个私有的工具方法来完成,这和上面的查询app类的ResourceMap相似。
ApplicationContext ac = ApplicationContext.getInstance();
return ac.getActionMap(getClass(), this).get(actionName);
}
/* We use getAction to set the action property of menu items
* and buttons and so on:
*/
openMenuItem.setAction(getAction("open"));
closeMenuItem.setAction(getAction("close"));
以这种方法定义的Action的缺省表示特性当从类的ResourceBundle载入时初始化。这样,Action的text, mnemonic, tooltip (shortDescription), and shortcut被定义在SingleFrameExample4.properties的ResourceBundle里:
open.Action.text = &Open...
open.Action.accelerator = control O
open.Action.shortDescription = open a documentclose.Action.text = &Close
close.Action.shortDescription = close the document
如果运行,将看见Action及其所有资源。
SingleFrameExample4 屏幕截图
编写动作可能困难的一个方面是处理那些潜在占用漫长时间或者阻塞的任务,比如文件系统或者网络访问。应用程序必须在后台线程里完成这些任务,让Swing事件分派线程(EDT)不会阻塞。在本例中,由JTextPane类处理异步文件载入。在许多情况下,应用程序开发者必须直接处理在后台上的运行任务。应用程序框架Task类(基于SwingWorker)简化了异步执行的动作的编写。
产生后台任务的动作
SwingWorker类在后台线程上计算数值,然后在事件分派线程上调用完成方法。应用程序通过覆盖SwingWorker done方法,或者增加一个PropertyChangeListener,或者覆盖process方法,能够监视SwingWorker并安全刷行GUI。它们当后台线程调用publish()方法时收到中间结果。能够测量它们自己进度的SwingWorker,设置进度特性通知PropertyChangeListener已经完成工作的百分比。
应用程序框架定义一个叫做Task的SwingWorker的子类,Task加入了一些特性让后台线程比较容易监视和管理。任务自动初始化从ResourceBundle载入的描述性特性。@Action方法能够返回一个Task对象,而框架将执行后台线程的Task。例如,这里的Task只是睡眠大约1500毫秒。
@Override protected Void doInBackground() throws InterruptedException {
for(int i = 0; i < 10; i++) {
setMessage("Working [" + i + "]");
Thread.sleep(150L);
setProgress(i, 0, 9);
}
Thread.sleep(150L);
return null;
}
@Override protected void done() {
setMessage(isCancelled() ? "Canceled." : "Done.");
}
}
尽管DoNothingTask产生一个消息并周期地更新进度特性,但是大多数情况下它只是睡眠。显而易见,这类事情不必在事件分派线程上执行。启动在后台线程上DoNothingTask的@Action可能像这样编写:
@Action Task JustDoNothing() {
return new DoNothingTask();
}
ActionExample4.java提供了一个孵化Task的@Action的有趣示例。它使用一个遍历枚举目录里所有文件的Task(ListFileTask),每次发布大约10个文件。Task使用publish方法将中间结果交付给运行在EDT上的process方法。ActionExample4.java通过建立一个覆盖process方法的应用程序的子类使用ListFilesTask来更新GUI:
public DoListFiles(File root) { // ctor runs on the EDT
super(root);
listModel.clear();
}
@Override protected void process(List files) {
if (!isCancelled()) {
listModel.addAll(files);
}
}
}
private Task doListFiles = null;
@Action
public Task go() {
stop(); // stop the pending DoListFiles task (if any)
setStopEnabled(true);
File root = new File(rootTextField.getText());
return new DoListFiles(root);
}
@Action(enabledProperty = "stopEnabled")
public void stop() {
if ((doListFiles != null) && !doListFiles.isCancelled()) {
if (doListFiles.cancel(true)) {
doListFiles = null;
setStopEnabled(false);
}
}
}
如果运行ActionExample4,将会注意到当应用程序后台正忙于枚举文件时,GUI依然保持可响应状态。本例以PropertyChangeListener监视由后台Task产生的消息并在窗口底部将它们显示出来(这段代码在上面未列出)。监视后台任务的状态典型地由TaskMonitor类处理。SingleFrameExample5使用TaskMonitor类,它是下节的主题。
ActionExample4 屏幕截图
本例也引入了绑定启用@Action状态为特性当前特性值的enabledProperty的标注参数。也存在一个指示GUI在后台任务运行时应当阻塞的block标注参数(演示未体现)。对示例中@Action(block = Block.ACTION)意味着当后台任务正运行时Action对象自身应当禁止。为了用模态对话框阻塞全部GUI,通过指定block = lock.APPLICATION来替代。ActionExample5.java演示了所有的可能性。
一个小而全的应用程序
SingleFrameExample5.java是迄今为止提供的最接近完整的应用程序。通过从JPL photojournal网址上下载某些非常巨大的火星探测器的图像,它打算突出后台任务的重要性。应用程序允许用户一步一步下载图像,并且抢先或者取消当前的下载/显示任务。应用程序的结构是典型的,包括了用将通用任务和应用程序GUI连接的子类(ShowImageTask)特化通用Task类(本例中的LoadImageTask)。
在前一节描述了Task管理大多数基础。几个额外的细节值得在此强调:
- StatusBar使用共享的TaskMonitor来显示当前"前台”任务。
- 通过显式终止图像读取操作(如果操作正在进行),LoadImageTask需要特别处理取消任务。通过覆盖Task.done(不是cancel,它是最终结构)方法来处理。
- 正如@Action所为,通过缺省的TaskService执行一个Task的ready()方法,显示第一幅图像。
SingleFrameExample5屏幕截图: Mars Rover(火星探测器)的着陆视图
评论
谢谢!由于项目所需,就把它给翻译了。
发表评论
-
CASE工具网址
2010-11-06 22:27 1035各种软件辅助设计工具层出不穷,下面有一个相对完整的UML工具列 ... -
Java Mail API
2009-01-29 00:36 1543Today,I meets a problem on java ... -
NetBeans 7.0 ML使用印象
2008-12-21 19:23 3884看到新闻《NetBeans7.0M1 发布》htt ... -
Nimbus Look and Feel
2008-11-29 21:14 2251imbus Look and Feel When the ve ... -
NetBeans 6.0 最终版发布并提供下载
2007-12-03 20:16 1903经过Beta1,Beta2和RC1和RC2之后,NetBean ... -
NetBeans 6.0 Beta2释出
2007-10-24 22:36 3603NetBeans IDE Beta 2现已提供下载,下 ... -
NetBeans 6.0 Beta is available!
2007-09-18 08:53 3648NetBeans.org is proud to announ ... -
NetBeans IDE 6.0 Milestone 10 (M10) Available!
2007-07-03 08:44 10316随着Eclipse 3.3(Europa)的发布,NetBea ... -
Swing应用程序框架(Swing Application Framework)API绪论(JSR-296)之一(翻译)
2007-05-20 21:50 3128概述 本文档是原型Swing应用程序框架的简介,目标读者是那些 ... -
NetBeans Mangazine 第三期发布
2007-05-10 23:42 1550NetBeans Mangazine– 第三期 –2007 ... -
Swing应用程序框架(Swing Application Framework)项目简介
2007-05-07 02:53 5483原来采用Java开发GUI桌面应用程序时自己 ... -
NetBeans 在Redhat Enterprise Linux 5.0 64位版本上的安装
2007-05-07 02:51 3274由于项目的需求,需要在Redhat Enterprise Li ... -
Java调用外部进程并拦截输出流--Java IDE Console解密(下篇)
2007-01-15 23:40 3593几乎所有的Java 集成开发环境都需要调用外部进程进行Java ... -
Java调用外部进程并拦截输入输出流--Java IDE Console解密(上篇)
2007-01-14 23:17 4434几乎所有的Java 集成开发环境都需要调用外部进程进行Jav ... -
Re: 琴瑟和鸣--让同一项目在NetBeans和Eclipse平台下和谐相处,协同开发
2007-01-05 21:45 1568[quote="lighter"]有意思的 ... -
Re: 琴瑟和鸣--让同一项目在NetBeans和Eclipse平台下和谐相处,协同开发
2007-01-05 21:44 1459[quote="zzsczz"]有违法的可 ... -
Re: 琴瑟和鸣--让同一项目在NetBeans和Eclipse平台下和谐相处,协同开发
2007-01-05 21:44 1523[quote="zzsczz"]似乎... ... -
琴瑟和鸣--让同一项目在NetBeans和Eclipse平台下和谐相处,协同开发
2007-01-01 02:33 4080在Java IDE世界里,Eclipse和NetBeans是平 ... -
JBuilder 2007 企业版Trial提供下载
2006-12-24 23:46 7442越接近年关,Java IDE世界真是好戏连连,先是Sun在11 ... -
Sun 在圣诞节前送出的最后礼物-NetBeans 5.5多国语言版释出!
2006-12-20 23:03 2251JBuilder在Eclipse的穷追猛 ...
相关推荐
包含翻译后的API文档:jsr311-api-1.1.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:javax.ws.rs:jsr311-api:1.1.1; 标签:javax、jsr311、api、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用...
包含翻译后的API文档:undertow-websockets-jsr-2.1.7.Final-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.undertow:undertow-websockets-jsr:2.1.7.Final; 标签:undertow、websockets、jsr、中文文档、jar...
包含翻译后的API文档:jsr311-api-1.1.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:javax.ws.rs:jsr311-api:1.1.1; 标签:javax、jsr311、api、中英对照文档、jar包、java; 使用方法:解压翻译后...
包含翻译后的API文档:undertow-websockets-jsr-2.1.7.Final-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:io.undertow:undertow-websockets-jsr:2.1.7.Final; 标签:undertow、websockets、jsr、中英...
webservice中用到的jar,xfire-jsr181-api-1.0-M1.jar,xfire-jsr181-api-1.0-M1.jar
包含翻译后的API文档:undertow-websockets-jsr-2.2.14.Final-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.undertow:undertow-websockets-jsr:2.2.14.Final; 标签:undertow、jsr、websockets、jar包、java...
包含翻译后的API文档:undertow-websockets-jsr-2.2.14.Final-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:io.undertow:undertow-websockets-jsr:2.2.14.Final; 标签:undertow、jsr、websockets、...
JSR-303接口标准,全称为Java Specification Request 303,是Java平台上的一个规范,旨在提供一种统一的、与框架无关的bean验证框架。该标准由Java Community Process(JCP)提出,目的是简化Java应用中的数据验证...
包含翻译后的API文档:jackson-datatype-jsr310-2.12.5-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.5; 标签:fasterxml、jackson、datatype、...
JSR-94 API的核心组件之一是`RuleServiceProvider`,它是获取规则引擎服务的入口点。通过它,开发者可以查找并实例化符合JSR-94规范的规则引擎。 #### 1.3 规则服务工厂(RuleServiceProviderFactory) `...
包含翻译后的API文档:jsr305-3.0.2-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:com.google.code.findbugs:jsr305:3.0.2; 标签:findbugs、jsr305、google、jar包、java、中英对照文档; 使用方法:...
包含翻译后的API文档:jackson-datatype-jsr310-2.11.4-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.4; 标签:fasterxml、jackson、...
包含翻译后的API文档:jackson-datatype-jsr310-2.9.7-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.7; 标签:jackson、jsr310、datatype、...
For questions or comments feel free to use jsr-170-comments@jcp.org Further information about JSR 170 can be found at http://www.jcp.org/en/jsr/detail?id=170 The Reference Implementation (RI) and ...
包含翻译后的API文档:jackson-datatype-jsr310-2.13.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.1; 标签:jackson、jsr310、datatype、...
包含翻译后的API文档:jackson-datatype-jsr310-2.9.7-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.7; 标签:jackson、jsr310、...
java.lang.ClassNotFoundException: javax.measure.converter.ConversionException所需的jar
在实际开发中,JSR 250 API 1.0 常常与Spring框架、CDI(Contexts and Dependency Injection)等结合使用,增强应用的依赖管理和生命周期管理。了解并熟练运用这些注解,能够极大地提高开发效率,减少手动管理对象...
标题 "xfire-jsr181-api-1.0-实例化webservic" 指的是使用XFire框架结合JSR 181规范来创建和实例化Web服务的过程。XFire是一款早期的Java Web服务实现,它提供了一种简单、高性能的方式来创建和消费SOAP服务。JSR ...
包含翻译后的API文档:jackson-datatype-jsr310-2.11.4-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.4; 标签:fasterxml、jackson、datatype、...