import java.awt.*;
import java.awt.event.*;class MyBtton extends Button implements ActionListener
{ int x=10,y=10,i=0;
  Color color[]={Color.red,Color.yellow,Color.green};
  Color c=color[0];
  MyBtton()
  { setSize(38,85);
    setBackground(Color.cyan);
    addActionListener(this);   
  
  }
  public void paint(Graphics g)
  { g.setColor(c);
g.drawOval(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()
{ MyBtton button=new MyBtton();
  setLayout(null);
  add(button);
  button.setLocation(30,30);
  setBounds(60,125,100,200);
  setVisible(true);
  validate();
  addWindowListener(new WindowAdapter(){
          public void windowClosing(WindowEvent e){
              System.exit(0);
          }
      });
}
}
public class PaintExa { /**
 * @param args
 */
public static void main(String[] args) {
new WindowCanvas();
// TODO Auto-generated method stub }}
上面的程序是实现交通指示灯的样式public void update(Graphics g) 
 { g.clearRect(x, y, 20, 20);
paint(g) ;
} repaint();
我把这三句删掉,程序任能实现该功能,这是因为事件处理之后,自动调用父类的方法吗?还有public void paint()重写父类方法怎么不调用就能运行??