Java Solaris 加入 SDN 参与讨论 我的社区 注册说明
 
JDK 6.0 API 中文版
 
 
 
 
 
Java API 文档中文版
通过实例学习 NetBeans 6 的新功能 第 2 部分:Java 桌面应用程序
 
By 片贝正纪, 7/15/08  

第 2 部分: Java 桌面应用程序


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/ 正在进行该框架的进一步开发工作。

下面简要介绍该框架的基本情况。首先来看看该框架的整体结构,这对后续使用 NetBeans 的 GUI 设计器会有一定帮助。


图 1 Swing 应用程序框架的整体结构

 

Swing 应用程序框架主要由以下 5 部分构成,并能提供较为复杂的生命周期管理和 Session 管理等。此外,可以简单地重用添加了 @Action 注释的 Action。不需要使用特定的方法和文件,就可以使用基于标准的资源绑定。

生命周期管理
  • 提供 Application, SingleFrameApplication 类
  • 应用程序的生命周期管理
  • launch()
  • initialize()
  • startup()
  • ready()
  • exit()
  • shutdown()
Session 管理
  • 窗口尺寸的管理
  • 窗口位置的管理
Action
  • ActionListener 调换
  • @Action 注释
任务
  • 异步 Action
  • 任务监视器
  • 任务的块化
资源
  • 普通的资源绑定
  • 资源注入
  • 使本地化成为可能


创建 Java 桌面应用程序项目
 

下面将演示如何使用 Swing 应用程序框架进行实际开发。GUI 设计器能够基于 Swing 应用程序框架创建应用程序。可以通过以下方法创建使用此框架的项目模板,随后可以在模板中编写实际代码。

  1. 选择“文件”>“新建项目”,这将打开“新建项目”对话框。
  2. 在“新建项目”对话框的“Java”选项中,选择“Java 桌面应用程序”。
  3. 在随后显示的向导画面的“项目名称”字段中输入“FlickrDemo”。
  4. 在“选择应用程序 Shell”窗格中选择“基本应用程序”。
  5. 点击“完成”按钮完成创建。

图 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


创建 Action
 

点击 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 开发游戏。