私はこのstackOverflow postのコードを使用しています。これは私が期待することを行います:
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));
}
}
コードの最初のブロックがループしてすべてのフォント リソースを変更するのに、2 番目のブロックは少数のアイテムのみをループする理由はありますか?