Hab jetzt noch n bisschen was geändert, so dass es eigentlich funktionieren müsste
[¢ode]
public class FontScalePanel extends JPanel {
static JFrame f = new JFrame();
JButton incrementSize;
JButton decrementSize;
UIDefaults defs = (UIDefaults) UIManager.getLookAndFeelDefaults().clone();
public FontScalePanel(){
super();
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
incrementSize = new JButton("vergroessern");
decrementSize = new JButton("verkleinern");
add(decrementSize);
add(incrementSize);
incrementSize.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
incrementFontSize();
}
});
}
private void incrementFontSize(){
// TODO: hier nicht immer die default werte laden!!!
System.out.println("FontScalePanel.incrementFontSize()");
for(Iterator i = new HashSet(defs.keySet()).iterator(); i.hasNext(); ) {
Object key = i.next();
Font font = defs.getFont(key);
if (font != null){
int size = font.getSize()+1;
//PLAIN=1, BOLD=1, ITALIC=2
Font[] fonts = {new Font(font.getName(), 0, size), new Font(font.getName(), 1, size),
new Font(font.getName(), 2, size), new Font(font.getName(), 3, size)};
UIManager.put(key, fonts[font.getStyle()]);
defs.put(key, fonts[font.getStyle()]);
//System.out.println(font);
System.out.println(UIManager.get(key));
}
}
SwingUtilities.updateComponentTreeUI(f);
}
public static void main (String [] args){
f.add(new FontScalePanel());
f.pack();
f.setVisible(true);
}
}[/code]
Die Schriftart wird nun immer vergrössert, allerdings "sieht" man das nur nach dem ersten mal, danach wird nichts grösser. Warum ist das so?