import java.awt.*;
import java.awt.event.*;class MyButton extends Button implements ActionListener
{ int x=10,y=10,i=0;
  Color color[]={Color.red,Color.yellow,Color.green};
  Color c=color[0];
  MyButton()
  { setSize(38,85);
    setBackground(Color.cyan);
    addActionListener(this);   
  
  }
  public void paint(Graphics g)
  { g.setColor(c);
g.fillOval(x, y, 20, 20);
 
  }
  public void update(Graphics g) 
  { g.clearRect(x, y, 20, 20);
paint(g) ;
  
  }
  public void actionPerformed(ActionEvent e)
  {  i=(i+1)%3;
     c=color[i];
     y=y+23;
     if(y>56)
      y=10;
     repaint();
       
   }
}
class WindowCanvas extends Frame
{ WindowCanvas()
{ MyButton button=new MyButton();
  setLayout(null);
  add(button);
  button.setLocation(30,30);
  setBounds(60,125,100,200);
  setVisible(true);
  validate();
}
}
public class PaintExa { /**
 * @param args
 */
public static void main(String[] args) {
new WindowCanvas();
// TODO Auto-generated method stub }}上面的程序是实现交通指示灯的效果,我用eclipse编译的时候报错:
Exception in thread "main" java.lang.NoSuchMethodError: MyButton: method <init>()V not found
at WindowCanvas.<init>(PaintExa.java:36)
at PaintExa.main(PaintExa.java:51)
而用命令提示符编时顺利通过,这是怎么回事??

解决方案 »

  1.   

    看提示啊大哥,找不到main方法,只要是类且没有错误都可以用jdk编译通过。
      

  2.   

    你应该运行PaintExa 类,而不是MyButton类。MyButton类中没有主方法的。
      

  3.   

    我用myeclipse运行了一下,可以运行起来啊
      

  4.   

    分成三个文件 或将无主方法的类的PUBLIC去掉   建议一个类一个文件
      

  5.   

    楼上所说的文件名说的是eclipse中存储的文件名,就是PaintExa啊,楼上所说的:分成三个文件 或将无主方法的类的PUBLIC去掉 建议一个类一个文件,我只是主方法的类名是public啊,一个类一个文件是把三个文件单独运行吗?
      

  6.   

    你把那些类分开写,然后运行包含main方法的类