老兄在同一个文件中不能有两个public文件啊!
再有你里边也有很多编写的错误.

解决方案 »

  1.   

    这是典型的事件处理机制。
    testbutton 是对象, ButtonHandler 是事件。
    当事件 ButtonHandler 的构造函数中将对象testbutton作为参数传入,为的是当事件被触发后,对对象testbutton执行相应的操作。
    你不应该用传统的模块化思想研究这个程序,应该建立起基于消息机制的面向对象变成思想,就好理解了。
      

  2.   

    这是个APPLET,当然要做到网页中,用浏览器执行了,你自己查查资料怎么把applet编译后放到网页中。如果你用的是jbuilder,我记得它可以帮你完成。
      

  3.   

    我用jbuild,但它不能把这两个类放在一起,执行有误,我知道如何用浏览器执行程序片,可是不知道如何编写这个applet的.java源码,我还是不明白,到底谁是主类,相互调用系统不承认!
      

  4.   

    <applet code =testbutton.class height=600 width=800></applet>
      

  5.   

    public  class ButtonHandler implements  ActionListener
    去掉public关键字或作为内部类或参考jb中的helloworld中的代码,用内隐类
      

  6.   

    下面是改后的程序可以的.
    用jb就不用自己编写applet
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    import java.awt.Graphics;
    import javax.swing.*;
    public class TestButton extends java.applet.Applet {
     Button button1;
      Color color;
      public TestButton() {
      }
      //Initialize the applet
      public void init() {
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      private void jbInit() throws Exception {
        button1 = new Button("Test Button");
         button1.addActionListener(new ButtonHandler(this));
         add(button1);
         Font font = new Font("TimesRoman", Font.PLAIN, 48);
         color = Color.black;
          resize(400, 200);  }
      public String getAppletInfo() {
        return "Applet Information";
      }
     public void paint(Graphics g)
     {  g.setColor(color);
        g.drawString("TEST COLOR", 55, 120);
     }
    }
    class ButtonHandler implements  ActionListener
    {  TestButton a;
       public  ButtonHandler(TestButton tb)
        { a=tb;}
        public void actionPerformed(ActionEvent  event)
        {   String arg = event.getActionCommand();
           if (arg == "Test Button")
           {   if (a.color == Color.black)
                  a.color = Color.red;
             else
                   a.color = Color.black;
             a.repaint();
            }
        }
    }