Список ключей Java UIManager
Я видел, как люди используют UIManager для изменения строк некоторых предварительно созданных компонентов свинга (например, JFileChooser).
Где я могу найти какую-то ссылку, которая скажет мне, какие строки в каких компонентах являются изменяемыми, и как я могу получить к ним доступ?
Чтобы уточнить:
я знаю это UIManager.put(key, newString);
изменит текст строки, на которую ссылается ключ, на "newString"
,
Где я могу найти список ключей?
4 ответа
Эти ключи предоставляются пакетами ресурсов Swing PLAF, и вы можете найти их в источниках JDK. Смотрите, например:
- http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/com/sun/swing/internal/plaf/basic/resources/basic.java
- http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/com/sun/java/swing/plaf/windows/resources/windows.java
- http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/com/sun/java/swing/plaf/gtk/resources/gtk.java
- ...
Строковые значения для языков, отличных от английского, предоставляются смежными пакетными файлами.
И вы можете добавить еще один пакет к любому из этих семейств, просто создав еще один файл для желаемого человеческого языка и разместив его в любом месте на вашем пути к классам. Пакеты в формате.java и.properties работают одинаково хорошо, хотя формат.java может быть немного более удобным для Unicode...
Возможно, стоит иметь в виду, что прямое добавление контента в com.sun
Пакет может нарушать лицензию Java. Поэтому, чтобы быть в безопасности, может быть целесообразно переместить ваши дополнительные ресурсы в собственный пакет и зарегистрировать его в UIManager
как это:
UIManager.getDefaults().addResourceBundle("mypackage.swing.plaf.basic.resources.basic");
Keys for UIManage
р являютсяLook and Feel
чувствительное, означает (например) значениеKeys for Metal Look and Feel
может отличаться при сравнении значения изSystem Look and Feel
, уведомление илиKey missed
тожеиспользовать UIManager Default s от @camickr
Вы, вероятно, лучше всего сделаете вывод списка самостоятельно, используя код, подобный следующему, поскольку ключи могут отличаться:
public static void printUIManagerKeys()
{
UIDefaults defaults = UIManager.getDefaults();
Enumeration<Object> keysEnumeration = defaults.keys();
ArrayList<Object> keysList = list(keysEnumeration);
for (Object key : keysList)
{
System.out.println(key);
}
}
Для меня список содержит 1365
элементы на Windows 10
,
Похоже, нужно запустить какой-то код, чтобы увидеть все ключи. Я знаю, что вопрос касается Java, но на самом деле самый быстрый способ получить ключи - запустить Groovy (или Gradle) скрипт:
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}"