java - 我想在运行时更改 SWT 应用程序的语言。怎么做?

标签 java swing internationalization

我正在为我的软件工程类(class)开发一个应用程序,先决条件之一是它的界面具有 2 种或更多语言。我已经实现了。另一方面,要求用户可以通过从组合框或类似的东西中进行选择来自行更改语言。

由于我使用 AWT 和 Netbeans,因此无法编辑表单的 initComponents 方法,因为它是自动生成的。我想到了以下选项,但不知道它们是否有效,所以我寻求帮助。

-编辑我的类的构造函数,使其如下所示:

public JFmyConstructor() {
    initComponents(); //auto-generated
    myInitMethod();
}

我想我会发现的问题是,我需要在接口(interface)运行后调用一次构造函数(因此,所有对象都被实例化。有解决方法吗?

最佳答案

可能我的回答来得有点晚了(可惜你把标题写错了)...

显然,您不必调用任何构造函数即可在运行时切换语言。在 Java 桌面应用程序中,它非常简单:

Locale brazilian = new Locale("pt", "BR");
Locale.setDefault(brazilian);

当然,如果你想通过 JComboBox 切换它,你可能会做一些不同的事情。我会做什么,我实际上会创建模型(Swing 促进 MVC 设计模式)来保存数据(不同的区域设置),并且我会在正确的 ActionListener 中设置默认区域设置。但这并不容易。

当然,我更愿意使用本地名称作为语言环境。如果您构造了它们,则只需调用 getDisplayName() 将其自身作为参数传递即可轻松获取 native 名称区域设置名称:

String brazilianNativeName = brazilian.getDisplayName(brazilian);

对于某些语言环境,结果可能不令人满意(不幸的是,我相信巴西葡萄牙语就是其中之一),但对此您无能为力(除非您使用自己的字符串)。

说实话,对于两种语言,我可能会使用一些链接。您可以使用简单的 JLabels 来做到这一点,只需设置正确的字体属性和颜色并分配通用的 ActionListener。然后,您可以查询实际单击的是哪一个,并相应地创建和设置区域设置。对于家庭作业来说应该足够了。

关于java - 我想在运行时更改 SWT 应用程序的语言。怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052779/

相关文章:

java语言语法

java - javaw.exe 的多个实例

android - SDK 支持印度语,PhoneGap 不支持

spring - 如何在 i18n Thymeleaf/Spring 消息的一部分中定义链接?

c# - xslt本地化

java - 评分栏,如何获得星数?

java - 如何在具有空布局的 JPanel 中添加 JTable?

java - 连接池显示数据库中的非 Activity 连接

java - 制作一套未装饰的可移动选项卡面板

java - 如何在第二个窗口中更新 jFrame?