FeaturesDocs & SupportCommunityBlogsPartners

国际化 GUI 窗体

本教程将指导您完成在 NetBeans IDE 中进行国际化的一些基本步骤。我们将对一个窗体设置国际化,并在稍后设计该窗体。接下来,我们会国际化整个项目,该项目在几个不同的包中包含若干窗体。您可以通过指定自动国际化或使用专门的向导来国际化应用程序。

预计时间:30 分钟

目录

本页上的内容适用 NetBeans IDE 6.0、6.1 和 6.5

要学完本教程,您需要具备以下软件和资源。

软件或资源 要求的版本
NetBeans IDE 版本 6.5、6.1 或 6.0
Java Development Kit (JDK) 版本 6 或
版本 5

国际化的原理

通过进行国际化,可以根据不同的语言和地区来改编应用程序,而无需进行工程更改或重新编译。国际化程序允许将文本性元素(如状态消息和 GUI 组件标签)存储在源代码外部并对其进行动态检索,而不是在程序中对其进行固定编码。

通常将国际化字符串以键/值对的形式存储在属性文件中。键是程序用于检索文本的标识符,而值是实际文本。对于转换程序所用的每种语言环境(或语言),都将创建一个属性文件。键在每种语言环境中都相同,只是字符串不同。

IDE 提供了用于执行下列各项操作的工具:

  • 在创建 GUI 窗体或 Java 程序时插入国际化字符串
  • 将单个文件或文件组中的所有固定编码字符串替换为国际化字符串

在设计时国际化 GUI 窗体

在此练习中,我们将打开 Java 应用程序演示项目,其中包含使用 GUI 生成器创建的常用查找对话框。接下来,我们将对窗体 FindDialog.java 启用自动国际化。为了测试已国际化的 GUI 窗体,我们将在属性文件中添加一种新的语言环境,然后在非缺省语言环境下运行该窗体。

打开示例项目

  1. 下载 InternationalizeDemo.zip 项目并将其解压缩到您计算机上的任何位置。
  2. 选择“文件”>“打开项目”(Ctrl-Shift-O),导航至您在上一步中解压缩的 InternationalizeDemo 项目,然后单击“打开”。项目文件夹可能包含在同样名为 InternationalizeDemo 的文件夹中。
  3. 展开“源包”> "demo",然后双击 "FindDialog.java"。将在 GUI 生成器中打开样例窗体。

    查找对话框

    要查看如何创建此 GUI 窗体的演示,请单击查看演示

启用自动国际化

  1. 在“检查器”窗口中选择根节点(名为“窗体 FindDialog”)。

  2. 在“属性”窗口中,选中“自动国际化”属性的复选框。

    如果选中该复选框,则 IDE 将按照“属性包文件”属性中的设置在 demo 包中创建 Bundle.properties 文件。如果您需要在其他位置创建此文件,则可以单击“属性包文件”属性的省略号 (...) 按钮,然后选择一个位置,或者直接在该属性的文本字段中键入路径。

  3. 在“项目”窗口中,双击 "Bundle.properties" 节点,或者右键单击该节点,然后选择“编辑”。

    将在源代码编辑器中打开该属性文件。正如您所看到的,将为窗体 FindDialog.java 生成所有相应的键和值。(每个键的名称是从窗体文件名和组件变量名派生的。例如,键 FindDialog.jLabel1.text 是为窗体文件 FindDialog 中包含的变量名为 jLabel1 的组件生成的。在此示例中,值 jLabel1 表示组件的 "text" 属性。

国际化各个 GUI 组件

现在,我们将使用 GUI 生成器为窗体中的 JLabel 和 JButton 输入国际化字符串。

  1. 在设计区域中选择相应的 GUI 组件(例如 jLabel1)。
  2. 在“属性”窗口中,单击 "text" 属性的省略号 (...) 按钮。请注意,您还可以对具有字符串值的其他属性进行国际化,例如助记符、可访问的名称、可访问的描述符和工具提示。
  3. 属性编辑器将切换至资源包模式。检查“包名”字段是否设置为 demo.Bundle,以及“键”字段是否包含字符串 FindDialog.jLabel1.text
  4. 在“值”字段中键入 Find What:
  5. 单击“确定”。

对所有组件重复以上步骤,以使该窗体如下图所示:

已国际化的窗体

要查看国际化 jLabel1 的演示,请单击查看演示

注意:可使用更加简单、快捷的方法来完成步骤 1 至 5:只需在“设计”视图中双击 "jLabel1",将其文本从 jLabel1 更改为 Find What:,然后按 Enter 键即可。其结果与以上提供的步骤所得到的结果相同。

添加新语言环境

  1. 在“检查器”窗口中选择根节点(“窗体 FindDialog”节点)。
  2. 在“属性”窗口中,单击“设计语言环境”属性的省略号 (...) 按钮。
  3. 在“国家/地区代码”字段中输入 ES
  4. 单击“确定”。

    "Bundle.properties" 节点下将显示新语言环境,如下所示:

    具有多种语言环境的属性文件

  5. 在“项目”窗口中,右键单击 "Bundle.properties",然后选择“打开”。
  6. 将相应表列中的各条消息转换为新语言(如西班牙语),如下所示:

    具有多种语言环境的属性编辑器

  7. 在“检查器”窗口中右键单击根节点,然后选择“重新装入窗体”(或按 Ctrl-R 组合键)。将重新打开该窗体,并在设计区域中装入西班牙语语言环境,如下所示:

    显示西班牙语消息的设计区域

您可以在此动画演示的操作中看到这些功能(尽管它并不完全对应于本教程)。

测试非缺省语言环境

  1. 在“项目”窗口中,右键单击 InternationalizeDemo 项目,然后选择“属性”。
  2. 在“类别”窗格中,选择“运行”节点。
  3. 在“VM 选项”字段中输入 -Duser.language=es -Duser.country=ES

    属性对话框

  4. 单击“确定”。
  5. 右键单击 InternationalizeDemo 项目,然后选择“运行项目”。

    IDE 将在西班牙语语言环境中运行 FindDialog 对话框。

国际化整个项目

通常,我们在缺省语言环境中拥有几个文件,并且系统要求我们改编这些文件,以便将其转换为其他语言。“国际化向导”是用于执行此任务的最佳工具,因为它可以一次国际化多个文件。我们将在 GUI 窗体示例项目中演示此功能,该项目包含在设计 Swing GUI 教程中创建的窗体。

创建样例项目

  1. 选择“文件”>“新建项目”,或者单击 IDE 工具栏中的“新建项目”图标。
  2. 在“类别”窗格中,选择“样例”> "Java" 节点。在“项目”窗格中,选择 "GUI Form Examples"。单击“下一步”。
  3. 在“项目名称”字段中输入 GUIFormExamples,然后指定项目位置(例如 /space/projects)。
  4. 将“使用专用文件夹存储库”复选框保留为取消选中状态。(如果使用的是 NetBeans IDE 6.0,则此选项不可用。)
  5. 确保“设置为主项目”复选框处于选中状态。
  6. 单击“完成”。

样例窗体项目

准备属性文件

  1. 选择“文件”>“新建文件”,或者单击 IDE 工具栏中的“新建文件”图标。
  2. 在“类别”窗格中,选择“其他”节点;在“文件类型”窗格中,选择“属性文件”。单击“下一步”。
  3. 在“文件名”字段中输入 ContactEditor,然后将 src/examples 文件夹指定为文件位置。
  4. 单击“完成”。

    IDE 将创建 ContactEditor.properties 文件,并在源代码编辑器中打开 ContactEditor(缺省语言) 文件。

    重复上述步骤以创建另一个 Antenna.properties 文件。

包含属性文件的项目

调用“国际化向导”

  1. 在“项目”窗口中,右键单击“源包”节点,然后选择“工具”>“国际化”>“国际化向导”。
  2. 选择 "Find.java",然后单击“删除源”按钮(出于演示目的)。

    “国际化向导”

  3. 单击“下一步”。
  4. 检查“国际化向导”是否提供了正确的属性文件 examples.Antennaexamples.ContactEditor。如果未提供,请使用“选择资源”按钮来选择正确的属性文件。

    “国际化向导”的第 2 页

  5. 单击“下一步”。
  6. 所有固定编码字符串都将显示在“国际化向导”的最后一步中,您可以在该步中确定将哪些字符串包含在属性文件中(使用复选框)。您也可以进一步定制各个键、值、注释和替换字符串的格式,方法是单击字符串的省略号 (...) 按钮。

    “国际化向导”的第 3 页

  7. 单击“完成”。

    现在,已完成源代码的国际化,接下来可以按照先前所述添加测试其他语言环境。

国际化单个窗体

使用自动国际化功能是国际化 GUI 窗体的最简便方法。但是,如果您没有安装更新包,或者还希望国际化不是由窗体编辑器生成的代码,则可以使用“国际化”窗口。(此功能可处理任何 .java 文件,而不仅仅是通过窗体编辑器创建的文件)。下面的示例使用了“国际化”窗口,该窗口是 NetBeans IDE 5.5 缺省安装的一部分。

在此最后练习中,我们将重用 GUI 窗体示例项目并国际化 Find.java 窗体(在先前的练习中排除了该窗体)。我们将调用“国际化”对话框来替换此文件中的所有固定编码字符串。最后,我们将简要演示如何在编写程序时将国际化字符串插入源代码中。

使用“国际化”对话框

  1. 在“项目”窗口中,右键单击 "Find.java",然后选择“工具”>“国际化”>“国际化”。

    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. 对于“包名”,单击“新建”按钮,选择“源包”> "examples" 文件夹,并输入 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);
    }
    });
    }

    要查看插入国际化字符串的演示,请单击查看演示

相关主题

有关更多信息,请参见以下链接:

  • Java GUI 学习资源,完整地列出了使用 Project Matisse(NetBeans GUI 生成器)创建 Java 图形用户界面 (Graphical User Interface, GUI) 的相关文章、指南和教程。
  • 设计 Swing GUI,提供了详细的 NetBeans GUI 生成器教程。
  • GUI 生成器常见问题解答,汇集了使用 NetBeans GUI 生成器的有用提示和技巧。

 

Companion
Projects:
                  Powered by: