- 浏览: 258613 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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使用印象
概述
本文档是原型Swing应用程序框架的简介,目标读者是那些愿意评论初始原型的的开发者。它既不是综合的教程,也不是开发者指南,它只是通过示例引入框架主要特性的概观。在检查规格说明(javadoc)和实现之前,阅读本材料是明智之举。
目标
本API的目标是由原始的Java规格请求(JSR) JSR-296所定义, 它在2006年5月批准。 其整体目标是简化构建Swing应用程序,让桌面Java开发人员对此的工作也是直截了当的。通过提供一小组类,也叫“框架”来达到此目标。框架定义了对大多数桌面应用程序的共有的基础设施:
- 应用程序生命周期管理,特别是GUI的启动和关闭。
- 对资源管理和载入的支持,这些资源是字符串,格式化的消息,图像,颜色,字体以及桌面应用程序共有的其他类型的资源。
- 对动作定义,管理和绑定的支持,其中包含了异步运行的动作(在后台运行)。
- 持久化会话状态:支持自动地,有选择地保存应用程序一次运行到下次运行的GUI状态。 比如顶层的窗口几何位置。
框架API概述
框架应用程序建立Application基类的子类,它定义了应用程序的生命周期,特别是应用程序的启动时所为,关闭时所为。当应用程序启动时,建立这个子类的单个实例。ApplicationContext 单体支持Application类的子类。它提供对动作,资源,任务,对话状态和存储和其它对象和服务的访问。它对应用程序来说是全局的。框架的整体结构可根据这两个单体来描述.
SR-296架构:应用程序(Application),ApplicationContext 单体模式
免责声明
这是初稿。在许多方面未完成,并且这里所述的API的确在演进当中。它打算为那些对框架API当前状态好奇并能容忍其瑕疵的开发人员所作。我希望它将激发那种让代码和文档下次修订更好的建设性反馈来。
应用程序框架示例
对开发者来说,熟悉新的API最容易的方法是通过学习几个示例。本节提供一系列示例增量式地展示许多API最为重要的方面。每个示例的源代码可在示例包中找到。
下面的示例节包含类它们依赖的框架类的简单梗概。要获得更完整的解释,请参见下面主要章节,或者查询javadoc规范。
基于Hello World的Application
为了编写应用程序,只需要做几件事情:
- 扩展Application 类并覆盖startup方法。 startup方法应当建立和显示应用程序初始的GUI。
- 当应用程序退出时,当用户关闭最顶层的窗口时,调用Application.exit()。这将导致应用程序让exitListeners运行并最终运行Application.shudown().
- 在main方法里,调用Application.launch方法。这将构建并启动在事件分派线程上的Application子类。
下列实例正是这样做的。实际上基于SingleFrameApplication类这种应用程序非常简单,因为它处理应用程序JFrame的构建和配置。但是本例这个版本应当使得在SingleFrameApplication 类里的“钩子下面(under the hood)”发生的事情更加明了。
JFrame mainFrame = null;
@Override protected void startup(String[] ignoreArgs) {
JLabel label = new JLabel("Hello World", JLabel.CENTER);
label.setFont(new Font("LucidaSans", Font.PLAIN, 32));
mainFrame = new JFrame(" Hello World ");
mainFrame.add(label, BorderLayout.CENTER);
mainFrame.addWindowListener(new MainFrameListener());
mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
mainFrame.pack();
mainFrame.setLocationRelativeTo(null); // center the window
mainFrame.setVisible(true);
}
private class MainFrameListener extends WindowAdapter {
public void windowClosing(WindowEvent e) {
exit(e);
}
}
public static void main(String[] args) {
launch(ApplicationExample1.class, args);
}
}
如果运行ApplicationExample1,结果如下:
ApplicationExample1 (Hello World) 屏幕截图
在此仍然存在许多(JFrame)样板,因为应用程序基类不能假定应用程序到底构建GUI的数量。下一个示例显示了通过使用一个扩展Application 叫做SingleFrameApplication的类,如何更简单地完成相同的工作。
基于Hello World的SingleFrameApplication
为了建立只有一个主JFrame的应用程序,只要扩展SingleFrameApplication类即可。应用程序的子类应当覆盖建立应用程序的主GUI面板的startup方法,然后建立,配置和显示包含这个面板的JFrame。
public void startup(String[] args) {
JLabel label = new JLabel(" Hello World ");
label.setFont(new Font("LucidaSans", Font.PLAIN, 32));
show(label);
}
public static void main(String[] args) {
launch(SingleFrameExample1.class, args);
}
}
尽管本例和前面的例子完全一致,但是建立和配置主JFrame的样本文件是由SingleFrameApplication.show 方法处理的。SingleFrameApplication也负责打点一些其它的公共的生命周期杂务,比如载入资源和保存/恢复对话状态。
带有资源的SingleFrameApplication
在前面示例中,建立了带有文字字符串的JLable。由用户读取的字符串应当本地化。为了完成本地化,字符串应当从ResourceBundle载入。应用程序框架支持自动初始化从ResourceBundle资源载入的有名组件的特性。对“资源注入(resource injection)”的支持超出了字符串的范畴;数值的初始值,颜色,字体和大多数其它的公共桌面GUI类型都能够用资源来定义。
这里是前面例子的新版本。本例除了设置它的名称之外,对JLabel没作任何配置:
public void startup(String[] args) {
JLabel label = new JLabel();
label.setName("label");
show(label);
}
public static void main(String[] args) {
launch(SingleFrameExample2.class, args);
}
}
SingleFrameExample2的ResourceBundle是以相同名字的特性文件,它驻留在资源子包里。文件中的资源定义了一个名叫"label"组件的初始值:
label.opaque = true
label.background = 0, 0, 0
label.foreground = 255, 255, 255
label.text = Hello World
label.font = Lucida-PLAIN-48
label.icon = earth.png
本例简单演示了配置从ResourceBundle的组件。在实际应用程序里,将使用很可能需要本地化的值的资源,有时是诸如颜色、字体那些和本地化值紧密相关的特性。通过用资源而不是用代码定义,隔离依赖于像图像文件之类的外部对象的组件特性也是有用的。这使得开发者比较容易理解应用程序外部资源依赖是什么,并能简化对系统的变化的处理。
如果运行SingleFrameExample2,那么其效果如下:
SingleFrameExample2 (Hello World) 屏幕截图
SingleFrameApplication.show方法使用ResourceMap的injectComponents方法初始化从应用程序的ResourceBundle载入的每个有名组件的特性。
退出应用程序
通过调用Applcaiton.exit方法,应用程序应当能顺利退出。当关闭主JFrame时,SingleFrameApplication的职责所在。在实际的应用程序里,确保用户在关闭是真的希望退出经常是重要的。例如,可能希望询问未保存的文档或者未完成的事务处理。在exit()真的终止应用程序之前,通过调用canExit方法轮询所有的exitListener。如果任何一个canExit方法返回false,退出过程将终止。否则,调用exitListener的willExit方法,并最终调用Appliciton 的shutdown方法。这些方法正是打理任何清扫工作的地方。
本例在下面正是用一个对话来询问用户确认退出的。
public void startup(String[] args) {
ExitListener maybeExit = new ExitListener() {
public boolean canExit(EventObject e) {
int option = JOptionPane.showConfirmDialog(null, "Really Exit?");
return option == JOptionPane.YES_OPTION;
}
public void willExit(EventObject e) { }
};
addExitListener(maybeExit);
JButton button = new JButton();
button.setName("button");
button.setAction(new ActionAdapter() {
public void actionPerformed(ActionEvent e) {
exit(e);
}
});
show(button);
}
public static void main(String[] args) {
launch(SingleFrameExample3.class, args);
}
}
本例的ResourceBundle和前面相似,既然这样还是配置了这个JButton。也增加了一个定义主JFrame的标题的资源。SingleFrameApplication命名它建立的JFrame为"mainFrame"。
mainFrame.title = ExitListener Demo
button.background = 255, 255, 255
button.foreground = 0, 0, 0
button.text = Click to Exit
button.font = Lucida-PLAIN-48
button.icon = exit.png
如果运行SingleFrameExample3,单击窗口的关闭按钮或者按下巨大的“Click to Exit”按钮尝试退出,将提示操作者确认:
SingleFrameExample3 屏幕截图
在本例里,使用建立一个实现了javax.swing.Action的匿名类的实例的常规方法来设置按钮的动作特性。动作对象的actionPerformed方法只是调用exit。应用程序框架则通过使用新的@Action标注从而建立动作对象的建立。
发表评论
-
CASE工具网址
2010-11-06 22:27 1034各种软件辅助设计工具层出不穷,下面有一个相对完整的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 2250imbus 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 3647NetBeans.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:52 2788用 @Action 标注定义动作 @Action标注打算作为A ... -
NetBeans Mangazine 第三期发布
2007-05-10 23:42 1549NetBeans 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 3592几乎所有的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、...
在实际开发中,JSR 250 API 1.0 常常与Spring框架、CDI(Contexts and Dependency Injection)等结合使用,增强应用的依赖管理和生命周期管理。了解并熟练运用这些注解,能够极大地提高开发效率,减少手动管理对象...
包含翻译后的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
标题 "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、...