Я использую код из этого сообщения stackOverflow, который делает то, что я ожидаю:
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));
}
}
Я попытался преобразовать его в следующий код, который перебирает только пару классов в javax.swing.plaf вместо полного набора компонентов. Я пробовал копаться в Swing API и HashTable API, но чувствую, что мне все еще не хватает чего-то очевидного.
for(Object key : UIManager.getDefaults().keySet()){
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));
}
}
Любые идеи, почему первый блок кода зацикливается и изменяет все ресурсы шрифта, а второй зацикливается только на нескольких элементах?