java - 设置组件的语言环境不成功

标签 java swing locale jcomponent

我需要我的应用程序以编程方式设置所有敏感组件的语言环境,例如 JTextFieldsJTextAreas。我也有日期信息(写成一个词的月份),这也是语言环境敏感的。

我写了下面的代码,但它似乎没有完成这项工作:

    public static void setLocale(java.awt.Container c /* main form */, Locale locale /* Locale.ENGLISH */) {

        Component[] components = c.getComponents();

        for (Component comp : components) {
            if (comp instanceof java.awt.Container)
                setLocale((java.awt.Container) comp, locale);
            comp.setLocale(locale);    
        }
    }

代码有什么问题?

最佳答案

下面的代码应该可以解决这个问题:

public void switchDefaultLocale(Locale l) {
    if (! l.equals(Locale.getDefault())) {
        Locale.setDefault(l);
        JComponent.setDefaultLocale(l);
    }
}

但这只会对 JComponent 的新实例产生影响。 如果您想更新现有实例,请不要忘记在每个实例上调用 updateUI()。

关于java - 设置组件的语言环境不成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6942966/

相关文章:

java - 十六进制到二进制到十进制 GUI

date - spring boot 测试 h2 data.sql 语言环境日期格式错误

java - Apache Kafka 和 Avro : org. apache.avro.generic.GenericData$Record 无法转换为 com.harmeetsingh13.java.Customer

java - Sys.getTime() 和 Sys.getTimerResolution() 的替代品?

java - 文档移动错误

php - "ru_RU"(俄语)setlocale 在日期和时间上不起作用

java - 为什么java Locale是最终的?

java - 为什么 apache hadoop 配置模块忽略 CDATA?

java - 如何才能拥有一组总值(value)最大的 JSpinner 对象?

java - 如何从可调整大小的 JTable 中获取值