Używam kod z this stackOverflow post, który robi to, co ja się spodziewać:Dlaczego funkcja UIManager.getDefaults(). KeySet() zwraca różne wartości niż klucze UIManager.getDefaults().()?
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));
}
}
Próbowałem byłaby go do następującego kodu, który pętle tylko przez kilka klas w javax.swing.plaf zamiast pełny zestaw komponentów. Próbowałem kopać wokół interfejsu API i interfejsu API HashTable, ale czuję, że wciąż brakuje mi czegoś oczywistego.
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));
}
}
jakieś pomysły dlaczego pierwszy blok kodu obwodów nad i zmienia wszystkie zasoby czcionek, natomiast druga pętla tylko przez garstkę maszyn?
Patrz także to związane [Q A] (http://stackoverflow.com/q/5729306/230513). – trashgod