小弟写了个留言板,编译没有问题,可设置字体总是没有起作用,请大侠指教。import java.awt.*;
import java.awt.event.*;class MyMessageBoard extends Frame implements ActionListener
{
Button butFontName1,butFontName2,butFontName3,butFontName4,
Label lbl1;
TextField txt1;

public MyMessageBoard()
{
super("留言板");
addWindowListener
(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
inistalize();

}

public void inistalize()
{
setSize(660,530);
this.setLayout(null);

lbl1=new Label("请输入你的留言:");
lbl1.setBounds(30,50,170,25);
add(lbl1);

txt1=new TextField("在这里输入你的留言!");
txt1.setBounds(30,82,500,350);
add(txt1);

butFontName1=new Button("宋体");
butFontName1.setBounds(230,460,60,30);
butFontName1.addActionListener(this);
add(butFontName1); butFontName2=new Button("仿宋");
butFontName2.setBounds(291,460,60,30);
butFontName2.addActionListener(this);
add(butFontName2);

butFontName3=new Button("黑体");
butFontName3.setBounds(352,460,60,30);
butFontName3.addActionListener(this);
add(butFontName3);

butFontName4=new Button("楷体");
butFontName4.setBounds(413,460,60,30);
butFontName4.addActionListener(this);
add(butFontName4); setVisible(true);
}

public void actionPerformed(ActionEvent e)
{
if (e.getSource()==butFontName1 | e.getSource()==butFontName2
|e.getSource()==butFontName3 | e.getSource()==butFontName4)
{   
//定义一个字体
Font font;

//得到文本框的字体属性
font=txt1.getFont();

//只是在原来的基础上修改字体
if (e.getSource()==butFontName1)
txt1.setFont(new Font("宋体",font.getStyle(),font.getSize()));
else if (e.getSource()==butFontName2)
txt1.setFont(new Font("仿宋",font.getStyle(),font.getSize()));
else if (e.getSource()==butFontName3)
txt1.setFont(new Font("黑体",font.getStyle(),font.getSize()));
else if (e.getSource()==butFontName4)
txt1.setFont(new Font("楷体",font.getStyle(),font.getSize()));
}

}

public static void main(String args[])
{
new MyMessageBoard();
}

}

解决方案 »

  1.   

    你看一下字体的选择:public Font(String name,int style,int size)
    A logical name must be either: Dialog, DialogInput, Monospaced, Serif, or SansSerif.
    现在可能不太支持本地字体库吧txt1.setFont(new Font("宋体",font.getStyle(),font.getSize()));
    txt1.setFont(new Font("仿宋",font.getStyle(),font.getSize()));
    // 黑体可这样更改
    txt1.setFont(new Font("黑体",Font.BOLD,font.getSize()));txt1.setFont(new Font("楷体",font.getStyle(),font.getSize()));
      

  2.   

    你也可以把系统中的字体打印出来,看看.或者直接把下面的代码改成一个工具类
    用来获取你需要的字体import java.awt.*;public class Test 
    {
    public static void main(String[] args)
    {
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

    Font[] fArr = ge.getAllFonts();

    for (int i = 0 ; i < fArr.length; i ++)
    System.out.println(fArr[i].getFontName());
    }
    }
      

  3.   

    TextField 不能设置字体
    用javax.swing.JTextField吧
      

  4.   

    package untitled10;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;class MyMessageBoard extends Frame implements ActionListener {
        Button butFontName1, butFontName2, butFontName3, butFontName4;
        Label lbl1;
        JTextField txt1;    public MyMessageBoard() {
            super("留言板");
            addWindowListener
                    (new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            }
            );
            inistalize();    }    public void inistalize() {
            setSize(660, 530);
            this.setLayout(null);        lbl1 = new Label("请输入你的留言:");
            lbl1.setBounds(30, 50, 170, 25);
            add(lbl1);        txt1 = new JTextField("在这里输入你的留言!");
            txt1.setBounds(30, 82, 500, 350);
            add(txt1);        butFontName1 = new Button("宋体");
            butFontName1.setBounds(230, 460, 60, 30);
            butFontName1.addActionListener(this);
            add(butFontName1);        butFontName2 = new Button("仿宋");
            butFontName2.setBounds(291, 460, 60, 30);
            butFontName2.addActionListener(this);
            add(butFontName2);        butFontName3 = new Button("华文行楷");
            butFontName3.setBounds(352, 460, 60, 30);
            butFontName3.addActionListener(this);
            add(butFontName3);        butFontName4 = new Button("楷体");
            butFontName4.setBounds(413, 460, 60, 30);
            butFontName4.addActionListener(this);
            add(butFontName4);        setVisible(true);
        }    public void actionPerformed(ActionEvent e) {
            if (e.getSource() == butFontName1 | e.getSource() == butFontName2
                | e.getSource() == butFontName3 | e.getSource() == butFontName4) {
    //定义一个字体
                Font font;//得到文本框的字体属性
                font = txt1.getFont();//只是在原来的基础上修改字体
                if (e.getSource() == butFontName1)
                    txt1.setFont(new Font("宋体", font.getStyle(), font.getSize()));
                else if (e.getSource() == butFontName2)
                    txt1.setFont(new Font("仿宋", font.getStyle(), font.getSize()));
                else if (e.getSource() == butFontName3)
                    txt1.setFont(new Font("华文行楷", font.getStyle(), font.getSize()));
                else if (e.getSource() == butFontName4)
                    txt1.setFont(new Font("楷体", font.getStyle(), font.getSize()));
            }    }    public static void main(String args[]) {
            new MyMessageBoard();
        }}改了其中一个字体,你的四种效果不明显。
      

  5.   

    另外
    多行输入用JTextArea   
    一般电脑里没有仿宋这个字体  只有 仿宋_GB2312