Это может быть проблемой с resourceBundles: текстовые свойства optionPane (а также fi fileChooser и другие) загружаются из локализованных пакетов.Они (раньше были, не совсем уверены, так ли это до сих пор) являются внутренними классами в com.sun.swing.internal.plaf.Возможно, там что-то идет не так ...
вот фрагмент кода, который работает:
String ok = "OptionPane.okButtonText";
String text = "";
text += " LAF: " + UIManager.getLookAndFeelDefaults().get(ok);
text += " lookup: " + UIManager.get(ok);
text += " default: " + UIManager.getDefaults().get(ok);
System.out.println(text);
// output, whereever I add that:
LAF: OK lookup: OK default: OK
независимо от того, какой LAF установлен в данный момент.Моя система win / vista, моя локаль по умолчанию de
Edit: просто для пояснения - локализованные ресурсы не обязательно являются прямыми записями в keys () / entrySet (), это методы в Hashtable, которые не переопределяютсяв UIDefaults.Поэтому, хотя поиск, как в моем фрагменте, всегда должен работать, запрос перечислений является неправильным - записи не там, а в некоторых кэшированных картах, которые заполняются resourceBundles.
Edit2: добавлено определение ok (думал, что это будет ... очевидно после нескольких часов разговора об этом ключе: -)
Edit3: для дальнейших экспериментов нам, вероятно, следует поискать aзначение, которое отличается от «OK» в разных языковых стандартах, например, cancelButtonText
Edit 4 (самое последнее до серьезного перерыва, обещано :-) - что касается «как найти все локализованные значения», невозможно безприбегая к грязным средствам (иначе: подробности реализации).Единственный способ, которым я могу придумать, - это посмотреть на ресурсные пакеты, которые - предположительно - загружены, например
import com.sun.swing.internal.plaf.basic.resources.basic;
String cancel = "OptionPane.cancelButtonText";
ListResourceBundle bundle = new basic();
for (String key : bundle.keySet()) {
if(cancel.equals(key)) {
System.out.println(key
+ ": " + bundle.getString(key));
}
}