Java UIManager 键列表

8

我看到有人使用UIManager更改预先创建的Swing组件(例如JFileChooser)的一些字符串。

我在哪里可以找到某种参考,告诉我哪些组件中的哪些字符串是可更改的,以及如何访问它们?

为了澄清:

我知道UIManager.put(key, newString);将更改键所引用的字符串的文本,将其更改为"newString"

我在哪里可以找到密钥列表?

4个回答

5
  • UIManager 的键是与 Look and Feel 相关的,这意味着(例如)Keys for Metal Look and Feel 的值与从 System Look and Feel 比较时可能不同,请注意是否 Key missed

  • 使用 @camickr 的UIManager Defaults


4

如果键可能不同,最好使用以下代码自己卸载列表:

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 个元素。


1
似乎必须运行一些代码才能看到所有的键。我知道这个问题是关于Java的,但最快获得键的方法是启动Groovy(或Gradle)脚本:
javax.swing.UIManager.getDefaults().keys().toList().toSorted().each {println it}

将其粘贴到文件中,然后调用groovy keys.groovygradle -b keys.groovy,无论哪种工具对您来说更容易。

不需要创建文件,也可以使用Groovy完成。只需执行:

groovy -e "javax.swing.UIManager.getDefaults().keys().toList().toSorted().each {println it}"

1
这些键由Swing PLAF资源包提供,您可以在JDK源代码中找到它们。例如,请参阅:

除英语外的其他语言的字符串值由相邻的bundle文件提供。

您可以通过在类路径上任何位置创建一个所需人类语言的文件并将其放置在其中,来向任何这些系列添加一个以上的bundle。.java和.properties格式的bundles同样有效,虽然.java格式可能略微更加Unicode友好...

需要记住的是,直接向com.sun包添加内容可能会违反Java许可证。因此为了安全起见,最好将额外的资源移动到自己的包中,并像这样向UIManager注册:

UIManager.getDefaults().addResourceBundle("mypackage.swing.plaf.basic.resources.basic");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接