我看到有人使用UIManager更改预先创建的Swing组件(例如JFileChooser)的一些字符串。
我在哪里可以找到某种参考,告诉我哪些组件中的哪些字符串是可更改的,以及如何访问它们?
为了澄清:
我知道UIManager.put(key, newString);
将更改键所引用的字符串的文本,将其更改为"newString"
。
我在哪里可以找到密钥列表?
UIManager
的键是与 Look and Feel
相关的,这意味着(例如)Keys for Metal Look and Feel
的值与从 System Look and Feel
比较时可能不同,请注意是否 Key missed
使用 @camickr 的UIManager Defaults
如果键可能不同,最好使用以下代码自己卸载列表:
public static void printUIManagerKeys()
{
UIDefaults defaults = UIManager.getDefaults();
Enumeration<Object> keysEnumeration = defaults.keys();
ArrayList<Object> keysList = Collections.list(keysEnumeration);
for (Object key : keysList)
{
System.out.println(key);
}
}
对于我来说,在 Windows 10
上,该列表包含 1365
个元素。
javax.swing.UIManager.getDefaults().keys().toList().toSorted().each {println it}
将其粘贴到文件中,然后调用groovy keys.groovy
或gradle -b keys.groovy
,无论哪种工具对您来说更容易。
不需要创建文件,也可以使用Groovy完成。只需执行:
groovy -e "javax.swing.UIManager.getDefaults().keys().toList().toSorted().each {println it}"
除英语外的其他语言的字符串值由相邻的bundle文件提供。
您可以通过在类路径上任何位置创建一个所需人类语言的文件并将其放置在其中,来向任何这些系列添加一个以上的bundle。.java和.properties格式的bundles同样有效,虽然.java格式可能略微更加Unicode友好...
需要记住的是,直接向com.sun包添加内容可能会违反Java许可证。因此为了安全起见,最好将额外的资源移动到自己的包中,并像这样向UIManager注册:
UIManager.getDefaults().addResourceBundle("mypackage.swing.plaf.basic.resources.basic");