请看以下的两段程序:
我的原意是, 在每次按下Button后, Button上的标签都会发生变化.
程序一, 不能通过编译.
程序二, 无效果.我的能力有限, 找不出原因, 所以我只能怀疑是: Applet的init()方法只在初始化时被执行一次, 当程序运行时, 动作发生后, 系统无法正常调用init()方法中 new Handle(), 所以没有结果, 或无法编译.现在我的另一个问题是, 如何达到我想要的结果.

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;public class FirstApplet extends Applet 
    {
    private String s;
    private Button button;

    public void init() 
    {// Applet的大小在 html中调整
    Button button = new Button("Hello");
    button.addActionListener(new Handle());
    this.add(button);  // this -> Applet
    s = "Welcome to Java!!";
    } public void paint(Graphics g) 
    {
    g.drawString(s, 50, 60 );
    }

    private class Handle implements ActionListener
    {
         public void actionPerformed(ActionEvent e)
         {    
         s = "Hello World!";
         button.setLabel("World");  // 我这么设置, 错在哪里??
         repaint();  // 重新绘制 Applet 组件
        }
        }

    }
      

  2.   

    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;public class FirstApplet extends Applet 
    {
    private String s;
    private Button button;
    boolean y;

    public void init() 
    {// Applet的大小在 html中调整
    Button button = new Button("Hello");
    button.addActionListener(new Handle());
    this.add(button);  // this -> Applet
    s = "Welcome to Java!!";
    } public void paint(Graphics g) 
    {
    g.drawString(s, 50, 60 );
    if (y)      
    button.setLabel("World");  
    else 
    button.setLabel("Java"); 
    }

    private class Handle implements ActionListener
    {
         public void actionPerformed(ActionEvent e)
         {    
         s = "Hello World!";
         y = (!y);
         repaint();  // 重新绘制 Applet 组件
        }
        }

    }