Ich verwende den Code aus this stackOverflow post, das tut, was ich erwarten:Warum gibt UIManager.getDefaults(). KeySet() andere Werte zurück als UIManager.getDefaults(). Keys()?
Enumeration<Object> keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof FontUIResource) {
FontUIResource orig = (FontUIResource) value;
Font font = new Font(orig.getFontName(), orig.getStyle(), orig.getSize());
UIManager.put(key, new FontUIResource(font));
}
}
Ich versuchte es mit dem folgenden Code zu Refactoring, die nur durch ein paar Klassen in javax.swing.plaf Schleifen statt der vollständige Satz von Komponenten. Ich habe versucht, um die Swing-API und HashTable-API zu graben, aber ich fühle mich, als ob ich immer noch etwas offensichtlich fehlt.
Irgendwelche Ideen, warum der erste Block des Codes überläuft und alle Font-Ressourcen ändert, während der zweite nur eine Handvoll von Elementen durchläuft?
Siehe auch diese verwandten [Q & A] (http://stackoverflow.com/q/5729306/230513). – trashgod