来先看段代码,其中有错误。import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Button;
import java.awt.Graphics;
import java.awt.Panel;public class FontInApplet extends Applet implements ActionListener
{
private Button big = new Button("放大");
private Button small = new Button("缩小");
private String str = "this is my first applet program"; public void init(){
Panel panel = new Panel(new FlowLayout());
setLayout(new BorderLayout());
panel.add(big);
panel.add(small);
add(panel,BorderLayout.NORTH); big.addActionListener(this);
small.addActionListener(this); setSize(300,300);
setVisible(true);
} public void actionPerformed(ActionEvent e){
//Graphics g = new Graphics();
if(e.getSource()==big){
g.setFont(new Font(str,Font.PLAIN,14));
}
if(e.getSource()==small){
g.setFont(new Font(str,Font.PLAIN,10));
}
}
         public void paint(Graphics g){
                  g.drawString(str,150,150);
         }
}想了很多方法,但是都无法正确改变字体。还有,paint方法何时调用?不胜感激。

解决方案 »

  1.   

    applet不是已经不太用了么,已经淡忘了
      

  2.   

    import java.applet.Applet;
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.Button;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Panel;public class Test extends Applet implements ActionListener
    {
        private Button big = new Button("放大");
        private Button small = new Button("缩小");
        private String str = "this is my first applet program";    public void init(){
            Panel panel = new Panel(new FlowLayout());
            setLayout(new BorderLayout());
            panel.add(big);
            panel.add(small);
            add(panel,BorderLayout.NORTH);        big.addActionListener(this);
            small.addActionListener(this);        setSize(300,300);
            setVisible(true);
        }    public void actionPerformed(ActionEvent e){
            Graphics g = this.getGraphics();
            if(e.getSource()==big){
                this.setFont(new Font(str,Font.PLAIN,20));
                repaint();
            }
            if(e.getSource()==small){
                this.setFont(new Font(str,Font.PLAIN,10));
                repaint();
            }
        }
             public void paint(Graphics g){
                      g.drawString(str,150,150);
             }
    }我看了下api,g.drawString 是用当前的字体,所以用this.setFont(),可以啦
      

  3.   

    改成this.setFont(new Font(str,Font.PLAIN,20));就好了 不能用g.setFont(new Font(str,Font.PLAIN,20));因为那是设置显示面板的字体,那不是Graphics对象的事情