我需要我的应用程序以编程方式设置所有敏感组件的区域设置,例如JTextFields
和JTextAreas
。我也有日期信息(月份写成一个单词),这也是区域敏感的。
我编写了以下代码,但它似乎没有完成这项工作:
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);
}
}
代码有什么问题?
答案 0 :(得分:0)
以下代码可以解决这个问题:
public void switchDefaultLocale(Locale l) {
if (! l.equals(Locale.getDefault())) {
Locale.setDefault(l);
JComponent.setDefaultLocale(l);
}
}
但这只会对JComponent的新实例产生影响。 如果要更新现有实例,请不要忘记在每个实例上调用updateUI()。
答案 1 :(得分:0)
基本上,我没有看到改变其语言环境的理由 组件树中的所有组件。 Since方法 getLocale()自动搜索其父项。
/**
* Gets the locale of this component.
* @return this component's locale; if this component does not
* have a locale, the locale of its parent is returned
*/
public Locale getLocale();
所以它应该足以设置的语言环境 树的根。但是语言环境是否受到尊重 在某个地方,我现在无法告诉你。
再见