一个java GUI 程序,上面有若干个组件例如 JButton ,JLabel之类的,期默认的字体表现太差,现在想改变其显示的字体,如果一个一个对所有组件调用setFont()的话,那太麻烦了,有没有什么方法能够一次更改所有组件的字体啊!!!!

解决方案 »

  1.   

    例如:UIManager.put("Label.font",new Font("宋体",Font.pain,15);
    如果使用setFont具体修改将重载通用的设置。
      

  2.   

    重载JFrame在构造函数中调用字体设置函数字体设置函数可以这么写
    UIManager.put("Button.font", font);
    UIManager.put("TextArea.font", font);
      

  3.   

    请恕小弟水平太差,我试了如下的测试代码,好像不行啊!
    import javax.swing.*;
    import java.awt.*;public class Test2 extends JFrame { private JButton button = null;
    private JLabel label = null; public Test2() {
    super("test");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Font font = new Font("新宋体", Font.PLAIN, 14);
    UIManager.put("JButton.font", font);
    UIManager.put("JLabel.font", font); button = new JButton("确定");
    //button.setFont(font);
    label = new JLabel("中文字体在swing上的表现测试");
    //label.setFont(font);
    System.out.println(button.getFont());
    System.out.println(label.getFont()); getContentPane().add(button, BorderLayout.SOUTH);
    getContentPane().add(label, BorderLayout.CENTER); pack();
    setVisible(true);
    } public static void main(String args[]) {
    try {
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    //UIManager.put("JButton.font", font);
    //UIManager.put("JLabel.font", font);
    } catch (Exception e) {
    }
    Test2 test = new Test2();
    }
    }button,label上的字体仍然是jdk默认的字体,并没有改为我想要的字体.
    还有就是如果一些组件在一个JPanel中如何更改这些组件的字体,用UIManager.put()也不行
      

  4.   

    -_!!!
    没有JButton.font这个属性,也没有JLabel.font这个属性。
    你设置Button.font就可以改变JButton了。
    可以运行下下面的代码,看看有那些属性可以设置。
            UIDefaults uiDefaults = UIManager.getDefaults();
            Enumeration enum = uiDefaults.keys();
            while (enum.hasMoreElements()) {
                Object key = enum.nextElement();
                Object val = uiDefaults.get(key);            //如果是字体对象,则打印
                if (val instanceof Font){
                    System.out.println("[" + key.toString() + "]");
                }
            }