国际化NetBeans IDE 5.5中的一个GUI窗体
http://www.netbeans.org/kb/55/gui-automatic-i18n.html
国际化NetBeans IDE 5.5中的一个GUI窗体
撰稿人:Jana Maleckova、Marek Grummich
以下教材将介绍在NetBeans IDE 5.5中将设置国际化的一些基本步骤。我们将对一个窗体设置国际化,随后对这样设置的窗体进行设计,最后对在几个封装中包含数个窗体的整个项目进行国际化。可通过两种方法将设置国际化。本教材的第一部分介绍自动国际化,第二部分使用一个特殊的向导。
预计持续时间:30分钟
先决条件
本教材假设读者具有以下技术的基本知识或编程经验:
l NetBeans IDE
本教材介绍:
l 国际化的原理
l 如何安装更新包(Update Pack)
l 如何在Design Time中设置自动国际化
l 国际化一个完整项目
l 国际化单个窗体
国际化的原理
国际化可以使应用程序适应各种语言和地区,不需要技术上的变更或者重新编译。国际化程序可以使诸如状态信息和GUI组件标签等文本元素存储在源代码的外部,并以动态方式将它们找回,而不是在程序中进行编码。
一般将国际化字符串以键/值对的形式存储在属性文件中。键是程序用来调回文本的标识符,值是实际的文本。为每一个用来翻译程序的场所(或语言)创建一个属性,在每个场所中将是相同的 –仅字符串不同。
IDE为进行以下工作提供工具:
l 在创建GUI窗体或Java程序时插入国际化字符串
l 使用国际化的字符串替换独立文件或文件组中的所有硬编码字符串
更新包的安装
国际化支持是NetBeans IDE 5.5默认安装的一部分,但是如果希望针对某个窗体使用特殊的自动国际化,必须安装Beta更新中心的GUI Builder更新包,这种更新还包含许多GUI Builder的其他功能。在http://form.netbeans.org/updates/update55.html上可以找到更多的信息。
一旦NetBeans IDE 5.5运行起来,请遵照以下步骤进行:
1. 在主菜单中,选择“工具”>“更新中心”。
2. 在已知的更新中心表中,点选NetBeans Update Center Beta.。 (不选其他,以加快连接过程。)
3. 单击“下一步”。IDE将连接至更新中心,并显示所有可用的更新。
4. 在“功能”节点内,选择NetBeans 5.5 的GUI Builder更新包,并单击“添加”。“包含安装”列表中将出现所有必要的模块。
5. 单击“下一步”并接受许可。
6. 下载模块之后,单击“下一步”继续。
7. 务必选择安装所有模块(带复选框的左列)。
8. 单击“完成”并重新启动IDE。
IDE重新启动后,安装完成,可以开始使用新功能了。
手动安装(二中择一)
也可以手动下载文件,安装更新包。只下载以下链接的文件,然后在“工具” |“更新中心”中选择“安装手动下载的模块”选项。
l org-netbeans-modules-i18n.nbm
l org-netbeans-modules-form.nbm
l org-netbeans-modules-i18n-form.nbm
l org-netbeans-modules-properties.nbm
在Design Time中国际化一个GUI窗体
在本练习中,我们将打开演示Java应用程序项目,该项目包含一个使用GUI Builder创建的有名的发现对话框。下一步,对FindDialog.java窗体进行自动国际化,为了测试国际化了的GUI窗体,我们将向属性文件添加一个新的场所,并在非默认场所运行窗体。
打开示例项目
1. 下载InternationlizeDemo.zip 项目,并将其解压在计算机的某个位置上。
2. 选择“文件”>“打开项目”(Ctrl-Shit-O),选择在上一步中创建的InternationalizeDemo文件夹,然后单击“打开”。
3. 展开“源封装”>“演示”并双击FindDialog.java。在GUI Builder中打开样本窗体。
要想查看如何创建该GUI窗体的演示,请单击“查看演示”。
打开自动国际化
1. 在“检查器窗口”中选择根节点(名为FindDialog窗体)。
2. 在“属性”窗口中,选择“自动国际化开”属性复选框。
设定复选框时,IDE在“演示”封装中创建Bundle.properties文件,就像在“属性绑定文件”(Properties Bundle File)属性中设置的一样。如果需要将该文件放在不同的位置,可以调用“定制编辑器(…)”并选择一个位置或者直接在属性的文本字段中直接键入路径。
3. 在“项目”窗口中,双击“项目窗口”中的“绑定”(Bundle)节点,或者右键单击节点并选择“编辑”。
在“源编辑器”中打开属性文件。可以发现,生成了针对FindDialog.java窗体的所有合适的“键”和“值”。(每个键的名称来自窗体名称和组件“变量”名称。)例如,FindDialog.jLabel1.text键是为窗体文件FindDialog中变量名为jLabel1的组件而生成的。本例中,jLabel1值代表组件的“文本”属性。
国际化独立GUI组件
我们现在将使用GUI构建器为窗体中JLabels和Jbuttons输入国际化字符串。
1. 在“设计区域”中选择合适的GUI组件(例如:jLabel1)。
2. 在“属性”窗口中,为“文本”属性单击省略符号(…)按钮。注意,还可以国际化其他拥有“字符串”值的属性,例如:Mnemonic、Accessible Name、 Accessible Descriptor,以及ToolTip。
3. 将属性编辑器切换至资源绑定模式。检查“绑定名称”字段是否设置成demo.Bundle,“键”字段包含字符串FindDialog.jLabel1.text
4. 在“值”字段中键入Find What:
5. 单击“确定”。
针对所有组件重复上述步骤,窗体如下图所示:
要查看国际化jLabel1的演示,单击“查看演示”
注意:可以用更简单和更快速的方法执行第1-5步:在设计视窗中双击jLabel1,将文本从jLabel1改成Find What:,然后按下“回车”。结果与以上步骤给出的相同。
添加一个新的场所
1. 在“检查器窗口”(FindDialog窗体节点)中选择根节点。
2. 在“属性”窗口中,为“设计场所”属性单击省略符号(…)按钮。
3. 在“国家代码”字段中输入ES。
4. 单击“确定”。
在“绑定属性”节点的下面出现新场所,如下所示:
5. 在“项目”窗口中,右键单击Bundle.properties,并选择“打开”。
6. 将表中相应列中的独立信息翻译成新的语言(例如:西班牙语),如下所示:
7. 在“检查器窗口”中右键单击根节点,然后选择“重新装入窗体”(或者按下Ctrl-R)。重新打开窗体,在设计中载入“西班牙语”场所,如下所示:
在该“Flash演示中”可见到这些功能的运行(虽然不能与本教材完全相同)。
测试一个非默认的场所
1. 在“项目”窗口中,右键单击InternationalizeDemo项目,并选择“属性”。
2. 在“类别”窗口中,选择“运行”节点。
3. 在“VM选项”中输入-Duser.language=es -Duser.country=ES。
4. 单击“确定”。
5. 右键单击InternationalizeDemo项目,并选择“运行项目”
IDE在西班牙语场所运行FindDialog对话。
国际化一个完整项目
一般情况下,在默认场所中我们拥有几个文件,需要对它们进行修改,以便将它们翻译成其他语言。在这种任务中,“国际化向导”是一种完美的工具,因为它能够一次国际化多个文件。我们将在“GUI窗体”示例项目中展示这一功能,该项目包含在GUI Building Tutorial中创建的窗体。
创建一个示例项目
1. 选择“文件”>“新项目”,或者单击IDE工具栏中的“新项目”图标。
2. 在“类别”窗口中,选择“示例”>“常规”节点,并且在“项目”窗口中选择“GUI窗体示例”。单击“下一步”。
3. 在“项目名称”字段中输入GUIFormExamples,然后指定项目的位置(例如:/space/projects)。
4. 务必选择“设置为主项目”复选框。
5. 单击“完成”。
准备属性文件
1. 选择“文件”>“新项目”,或者单击IDE工具栏中的“新文件”图标。
2. 在“类别”窗口中,选择“其他”节点,在“文件类型”窗口中选择“属性文件”。单击“下一步”。
3. 在“文件名称”字段中输入ContactEditor,将src/examples文件夹指定为文件位置。
4. 单击“完成”。
IDE创建ContactEditor.properties文件,并在“源编辑器”中打开 ContactEditor(默认语言) 文件。
重复以上步骤创建另一个Antenna.properties文件。
调用国际化向导
1. 在“项目”窗口中,右键单击Source Packages节点,并选择“工具”>“国际化”>“国际化向导”。
2. 为了进行展示,选择Find.java,并单击“取消源”按钮。
3. 单击“下一步”。
4. 检查“国际化”向导是否提供了正确的属性文件examples.Antenna和 examples.ContactEditor。如果不是,使用“选择资源”按钮来选择正确的属性文件。
5. 单击“下一步”。
6. 在“国际化”向导的最后一步显示所有硬编码的字符串,可以确定它们中哪些来自属性文件(使用复选框)。通过为某个字符串单击省略符号(…)按钮,可以进一步自定义独立的键、值、注释,以及被替换字符串的格式。
7. 单击“完成”。
现在完成了源代码的国际化,另一个场所可以是added和tested ,如上所示。
国际化单个窗体
使用I18n功能是国际化一个GUI窗体的最简单方法。但是,如果没有安装更新包,或者还希望国际化不是由“窗体编辑器”生成的代码,使用“国际化”窗口是一种解决办法。(这种功能可用于任何.Java文件,不只是使用“窗体编辑器”创建的文件)下一个例子使用“国际化”窗口,该窗口是默认Netbeans IDE 5.5安装的一个部分。
在这个最后的练习中,我们将重新使用“GUI窗体示例”项目,并国际化Find.java窗体,该窗体不包含在以上的练习中。我们将调用“国际化”对话框,来替换该文件中的所有硬编码字符串。最后,我们将了解如何在编写程序时在源代码中插入一个国际化字符串。
使用国际化对话框
1. 在“项目”窗口中,右键单击Find.java,并选择“工具”>“国际化”(Internationalization)>“国际化”(Internationalize)。
IDE显示“国际化”对话框,并预填充来自Find.java源代码的第一个硬编码的字符串。
2. 单击“浏览”,选择一个特别的属性文件,或者创建一个新的属性文件(例如:Find.properties)。
3. 可以在必要的时候修改所替换字符串、键、值,或者注释的格式。我们只是保持默认值。
4. 单击“替换”,确认变更,并将光标移向下一个硬编码的字符串。
如果不需要更换硬编码字符串,单击“跳过”按钮
要查看国际化对话框的演示,单击“查看演示”
插入单个已国际化的字符串
1. 在“项目”窗口中,右键单击Find.java,并选择“编辑”。
IDE在“源编辑器”中打开Find.java文件。
2. 翻动源代码,找到main方法。
3. 在main方法中用粗体加入以下行:
public static void main(String args[]) {
System.out.println();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Find().setVisible(true);
}
});
}
4. 按下Ctrl-Shift-J,调出“国际化字符串对话框”。
5. 对于“绑定名称”,单击“新”按钮,选择“源封装”>示例文件夹,然后输入Find作为“绑定”的名称。然后单击“确定”。“绑定名称”字段显示examples.Find。
6. 在“键”下拉框中键入Start,在“值”字段中键入Start Find Dialog。然后单击“确定”。
7. IDE插入一个国际化字符串:
public static void main(String args[]) {
System.out.println(java.util.ResourceBundle.getBundle("examples/Find").getString("Start"));
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Find().setVisible(true);
}
});
}
要查看插入国际化字符串的演示,单击“查看演示”
相关主题
更多信息请查看以下链接:
l Java GUIs and Project Matisse Learning Trail 使用NetBeans GUI构建器Project Matisse创建Java图形用户界面(GUI)的文章、指南,以及教材的完整清单。
l GUI Building Tutorial 详细的NetBeans GUI 构建器教材。
l Matisse GUI Builder FAQ 使用NetBeans GUI构建器有用的提示和技巧集。