to cherami: gui
to magus_yang:
how to change?

解决方案 »

  1.   

    如果你是GUI中显示的中文:
    我的做法,在main()或init()里加如下代码:
    还有什么地方要设字体,再加语句。Font f=new Font("宋体",Font.PLAIN,12);
    UIManager.put("Label.font",f);
    UIManager.put("ComboBox.font",f);
    UIManager.put("Button.font",f);
    UIManager.put("TabbedPane.font",f);
    UIManager.put("RadioButton.font",f);
    UIManager.put("TitledBorder.font",f); 
      

  2.   

    jdk1.3中只有MetalLookAndFeel的dialog.bold字体不正常,其他LookAndFeel的字体都是正确的
    可以通过扩展DefaultMetalTheme来改变MetalLookAndFeel字体和颜色,以下这个例子只改变了不正常的字体,这样就不用每个组件都SetFont()了在显示Swing组件之前(例如在主函数中)调用 MetalLookAndFeel.setCurrentTheme(new NewMetalTheme());
    更详细的例子可以看jdk的例子程序SwingSet2////////////////////////////////////////////////////////
    import javax.swing.plaf.*;
    import javax.swing.*;
    import java.awt.*;public class NewMetalTheme extends DefaultMetalTheme {
        
        private FontUIResource controlFont;    public FontUIResource getControlTextFont() { 
    if (controlFont == null) {
        try {
    controlFont = new FontUIResource(Font.getFont("swing.plaf.metal.controlFont", new Font("Dialog", Font.PLAIN, 12)));
        } catch (Exception e) {
    controlFont = new FontUIResource("Dialog", Font.PLAIN, 12);
        }
    }
    return controlFont;
        }    public FontUIResource getMenuTextFont() { 
    if (controlFont == null) {
        try {
    controlFont = new FontUIResource(Font.getFont("swing.plaf.metal.controlFont", new Font("Dialog", Font.PLAIN, 12)));
        } catch (Exception e) {
    controlFont = new FontUIResource("Dialog", Font.PLAIN, 12);
        }
    }
    return controlFont;
        }    public FontUIResource getWindowTitleFont() { 
    if (controlFont == null) {
        try {
    controlFont = new FontUIResource(Font.getFont("swing.plaf.metal.controlFont", new Font("Dialog", Font.PLAIN, 12)));
        } catch (Exception e) {
    controlFont = new FontUIResource("Dialog", Font.PLAIN, 12);
        }
    }
    return controlFont;
        }
    }