在 Swing 中更改运行时的区域设置

2022-09-02 03:40:50

我希望能够在运行时更改 Swing 应用程序中的区域设置,并让屏幕上的所有文本元素使用来自新区域设置的资源包的本地化文本进行自我更新。

是否可以在不自定义 Swing 组件或为处理呈现本地化文本的所有组件创建 UIDelegate 的情况下执行此操作?

如果不是,那么我可以考虑实施的好解决方案是什么?


答案 1

用于访问字符串。ResourceBundle.getBundle(BUNDLE_NAME).getString(key);

当更新默认语言环境时,例如通过清除资源包缓存:Locale.setDefault(Locale.GERMAN);ResourceBundle.clearCache();

的下一个调用 should 返回所选区域设置的本地化字符串。ResourceBundle.getBundle(BUNDLE_NAME).getString(key);


答案 2
  1. 你有一个用于更改应用区域设置(并可能保留新值)的方法,以及另一个用于获取本地化字符串的方法。

  2. 创建接口:

    interface LocaleChangeListener {
        void onLocaleChange();
    }
    

    通过UI组件实现它,这些组件需要能够在运行时更改区域设置并在 override 中设置新值。onLocaleChange()

  3. 现在,有一个侦听器列表,这些侦听器将在第一种方法的区域设置更改时收到通知。


推荐