通过实例学习 NetBeans 6 的新功能 第 2 部分:Java 桌面应用程序
2011-06-09 22:47
766 查看
NetBeans 6.0 是一款“无所不能”的 IDE。本系列文章将围绕 2 月刚刚发布的 NetBeans 6.0.1 中文版的概要和实际使用方法进行介绍,并提供一些示例程序。本部分将主要介绍 Java SE 的相关功能,以及如何使用 GUI 设计器和 Swing 应用程序框架开发一个简单的桌面应用程序,然后将该应用程序发布到 Web Start。
■ NetBeans 6.0 为 Java 提供的新功能和扩展功能NetBeans 6.0 提供了众多新功能和扩展功能,众所周知的 GUI 设计器(Matisse 项目)也从 5.5 版本开始得到了极大的增强。此外,由于整合了 Profiler, 5.5 版也变得更加容易使用。下表列出了 Java SE 的新功能和扩展功能。
GUI 设计器 | 自动国际化功能 Java 6 界面 支持 L&F 上下文帮助 使用语言指令高亮字体 支持 JSR-296 Swing 应用程序框架 支持 JSR-295 Beans 绑定 |
Java Web Start | Java 应用程序项目的 Java Web Start 化 运行环境的转换 |
Profiler | Profiler 已作为 Java SE 标准默认安装,不需要另行安装。 HeapWalker Drill down 图 Profiler Point |
编辑器的扩展 | NetBeans 6.0 的编辑器得到了大量改进。 操作界面的改善 代码自动完成 语法高亮显示 代码生成 即时更名 实时模板 另外,编辑器还增加了以下外围功能。 任务列表 本地历史记录 变更比较查看器 异同点边侧栏 |
http://www.netbeans.org/features/index_ja.html
现在,尝试利用 Swing 应用程序框架,开发一个简单的获取图像的应用程序。实现在 Flickr(flickr.com)进行关键字搜索,获取并且显示单幅图像的功能。(要运行此 Demo,需要获取 Flickr API 的 API KEY,并能连接到互联网。)
■Swing 应用程序框架 (JSR-296)
Swing 应用程序框架可用于创建 Swing 应用程序。框架给人的印象总是非常繁琐且难以使用,但 Swing 应用程序框架却是一个小巧、没有特定设置文件且简单易用的框架。https://appframework.dev.java.net/ 正在进行该框架的进一步开发工作。
Swing 应用程序框架 https://appframework.dev.java.net/
JSR-296 http://jcp.org/en/jsr/detail?id=296
下面简要介绍该框架的基本情况。首先来看看该框架的整体结构,这对后续使用 NetBeans 的 GUI 设计器会有一定帮助。
图 1 Swing 应用程序框架的整体结构
Swing 应用程序框架主要由以下 5 部分构成,并能提供较为复杂的生命周期管理和 Session 管理等。此外,可以简单地重用添加了 @Action 注释的 Action。不需要使用特定的方法和文件,就可以使用基于标准的资源绑定。
生命周期管理 | 提供 Application, SingleFrameApplication 类 应用程序的生命周期管理 launch() initialize() startup() ready() exit() shutdown() |
Session 管理 | 窗口尺寸的管理 窗口位置的管理 |
Action | ActionListener 调换 @Action 注释 |
任务 | 异步 Action 任务监视器 任务的块化 |
资源 | 普通的资源绑定 资源注入 使本地化成为可能 |
下面将演示如何使用 Swing 应用程序框架进行实际开发。GUI 设计器能够基于 Swing 应用程序框架创建应用程序。可以通过以下方法创建使用此框架的项目模板,随后可以在模板中编写实际代码。
选择“文件”>“新建项目”,这将打开“新建项目”对话框。
在“新建项目”对话框的“Java”选项中,选择“Java 桌面应用程序”。
在随后显示的向导画面的“项目名称”字段中输入“FlickrDemo”。
在“选择应用程序 Shell”窗格中选择“基本应用程序”。
点击“完成”按钮完成创建。
图 2 项目创建向导
至此,已经完成了项目创建。主编辑器窗口中附加了 GUI 设计器的各种菜单栏。接下来先运行一下项目。按 F6 功能键,或者依次选择“运行”>“运行主程序”来运行项目。试着改变应用程序的大小和窗口的位置,然后停止运行。再次运行项目,应用程序会在相同的位置,以相同大小的窗口启动。这就是 Swing 应用程序框架的 Session 管理功能。
在左侧项目窗口的“源包”节点下,找到“FlickrDemoApp.java”文件,双击该文件在编辑窗口中显示其代码。使用FlickrDemoApp 继承 SingleFrameApplication,使用 GUI 组件创建 startup() 方法,并且在 main() 方法中调用 launch() 方法,如以下代码所示,。
/* * FlickrDemoApp.java */ package flickrdemo; import org.jdesktop.application.Application; import org.jdesktop.application.SingleFrameApplication; /** * The main class of the application. */ public class FlickrDemoApp extends SingleFrameApplication { /** * At startup create and show the main frame of the application. */ @Override protected void startup() { show(new FlickrDemoView(this)); } /** * Main method launching the application. */ public static void main(String[] args) { launch(FlickrDemoApp.class, args); } }
■使用 GUI 设计器创建程序界面
使用 GUI 设计器实际创建一个图形用户界面。打开 FlickrDemoView.java,单击“设计”选项卡,打开 GUI 设计器。
NetBeans 的 GUI 设计器附有组件面板,可以从组件面板上将组件托放到窗体上来创建应用程序界面。也可以将自己创建的组件添加到组件面板中。
图 3 GUI 编辑器
组件面板按照内容分类,使用十分简单。
图 4 GUI 设计器组件面板
可以将组件简单地置于需要的位置,再通过移动、放大缩小等操作,来创建如以下向导所示的窗体。
图 5 GUI 设计器的设计区域
如上图所示,将 JLabel、JTextField 和 JButton 组件置于设计区,然后在下面空白处再放置一个 JLabel。选中组件按 Space 键可以编辑显示的文本,右键单击各组件并选择“更改变量名称”,将添加的各组件更改为以下列表中的信息。
原变量名、Label 名 | Label | 变量名 |
jLabel1 | Keyword: | keywordLabel |
jLabel2 | [空白] | imageLabel |
jTextField1 | [空白] | keywordText |
jButton1 | Find | findButton |
点击 findButton 按钮创建操作。右键单击 findButton,在上下文菜单中选择“设置操作”,如下图所示。
图 6 创建操作菜单
这将显示如下图所示对话框。在“操作”下拉菜单中选择“创建新操作...”。在“操作方法”字段中输入“doSearch”。在属性的“文本”字段中输入“Find”, 将 search.jpg 保存到适当的文件夹中,然后通过“导入到项目”按钮指定它作为小图标。
图 7 创建操作对话框
根据以下代码编写 FlickrDemoView.java 源代码创建操作。双击 keywordText 设置相同的操作。
@Action public void doSearch() { }
■添加代码
将 Flickr.java 复制到项目的源代码文件夹。把下载的文件复制到“源包”节点下的“flickrdemo”包下面。使用从 http://www.flickr.com/services/api/misc.api_keys.html 获取的 API KEY 替换 Flickr.java 代码中的 MY_KEY。用以下代码替换操作的 doSearch() 方法中的内容。它实现的主要功能是将获取的图标设置到 imageLabel 中。
@Action public void doSearch() { String s = keywordText.getText(); Icon icon = Flickr.getInstance().search(s); imageLabel.setIcon(icon); }
实际运行程序(这个应用程序必须要连接到互联网才能运行)。输入要搜索的单词,点击 Find 按钮或者直接按回车键查看搜索结果,如下图所示。
图 8 实际运行画面
■在后台运行操作
下面将进一步完善程序。在关键字搜索期间,按钮处于点击状态,并且应用程序暂时处于无法响应的状态。因此要将操作更改为在后台运行。
Swing 应用程序架构可以简单地运行后台操作。可以通过在操作的设置对话框中选中“后台任务”复选框进行设置。
图 9 设置后台任务
修改源代码,将操作的返回值更改为 Task 类型。根据下示代码更改源代码。DoSearchTask 类调用 doInBackgroupd() 方法进行搜索,通过 succeeded() 方法将获取的图标设置到 imageLabel 中。更改对象的返回值为 Icon。
@Action public Task doSearch() { return new DoSearchTask(getApplication()); } private class DoSearchTask extends org.jdesktop.application.Task <Icon, Void> { private String s; DoSearchTask(org.jdesktop.application.Application app) { super(app); s = keywordText.getText(); } @Override protected Icon doInBackground() { return Flickr.getInstance().search(s); } @Override protected void succeeded(Icon result) { imageLabel.setIcon(result); }
实际运行程序,在搜索的期间状态栏的进度条一直在动,由此可见搜索功能是在后台运行的。
图 10 以后台方式运行、进度条
■应用程序中文化
通过 GUI 设计器配置的组件 Label 名称都是在资源绑定中自动保存的。可以通过编辑资源绑定方便地实现中文化。在 FlickrDemoView.properties 中添加中文的资源绑定。在上下文菜单中选择“添加语言环境”,然后添加中文。
图 11 创建中文绑定
同样,在 FlickrDemoView.properties 的上下文菜单中选择“打开”。在打开的窗口中输入英语对应的中文属性值。
图 12 用属性编辑器进行中文化作业
完成中文化后,在日语环境中运行时,UI Label 的变化如下图所示。在英语环境中运行时,则会用英语显示。
图 13 中文化的应用程序
■将应用程序发布到 Java Web Start
要使其他人也能使用此应用程序,可以发布其 jar 包。本文将通过 Java Web Start 将它发布到互联网&。
NetBeans 6.0 能够构成多个运行环境,其中包括 Java Web Start。如下图所示,在项目属性窗口的“应用程序”分支下选择“Web Start”,然后在右侧选中“启用 Web Start”复选框。
图 14 通过属性窗口启用 Java Web Start
完成设置后启动 Web Start,它会自动读取 jar 包并运行应用程序。
借助 NetBeans 6.0.1 的 Java 桌面应用程序项目模板,开发人员可以方便地构建应用程序,而且 Swing 应用程序框架和 Beans Binding 等组件也简化了繁琐的开发过程。下一部分将介绍如何使用 Mobility 开发游戏。
相关文章推荐
- 通过 Health Center API 监视 Java 应用程序,第 2 部分
- Java桌面应用程序开发——iKB知识管理系统的第一次功能增强
- 通过实例深入学习Java的Struts框架中的OGNL表达式使用
- 利用NetBeans构建一个 Java 桌面数据库应用程序
- 通过实例学习Java对象的构造过程
- 使用NetBeans开发Java桌面应用程序时修改应用的UI样式为Windows
- java通过模拟post方式提交表单实现图片上传功能实例
- 数据连接部分通过测试源代码-----java学习笔记之4
- 利用NetBeans构建一个 Java 桌面数据库应用程序
- Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件
- 利用NetBeans构建一个 Java 桌面数据库应用程序
- 2009-03-10学习记录:NetBeans+Wicket开发JavaWeb应用程序
- Android简单数据存储类SharedPreferences详解及实例(通过“记住密码”功能学习SharedPreferences)
- Selenium2学习-023-WebUI自动化实战实例-021-获取浏览器显示区域大小,通过 WebDriver 截图功能
- Android简单数据存储类SharedPreferences详解及实例(通过“记住密码”功能学习SharedPreferences)
- 通过实例深入学习Java的Struts框架中的OGNL表达式使用
- (源码实例)通过层DIV实现,当鼠标放在链接上面,显示图片及文字 - 流星絮语 JAVA学习笔记 - CSDNBlog
- 单实例运行Java桌面应用程序
- 利用NetBeans构建一个 Java 桌面数据库应用程序
- Java Math 类中的新功能,第 2 部分 浮点数