Salut,  
Pour que ça marche, il faudrait plutpot faire un truc du genre :  
 
 
import java.awt.*;
import java.awt.event.*;
 
public class Aplig extends Frame implements ActionListener{
  Button bcercle =new Button("Cercle" );
  Button beffacer =new Button("Effacer" );
  Button bquitter=new Button("Quitter" );
   
  MyCanvas canvas;
 
  Panel pan1=new Panel();
   
  public Aplig(){
     
    setLayout(new BorderLayout());
    pan1.add(bcercle);
    pan1.add(beffacer);
    pan1.add(bquitter);
    bquitter.addActionListener(this);
    bcercle.addActionListener(this);
    beffacer.addActionListener(this);
    add(pan1, BorderLayout.NORTH);  
    canvas = new MyCanvas(this);
    add(canvas, BorderLayout.CENTER);
    setSize(400,600);
    setVisible(true);
     
  }
   
   
  public static void main(String[]argv){
    new Aplig();
  }
   
  public void actionPerformed(ActionEvent e){
    Graphics g=getGraphics();
    Object evt=e.getSource();
    if (evt==bquitter){
      System.exit(0);
    } else if (evt==bcercle){
      canvas.drawCircle();
    } else if (evt==beffacer){
      canvas.clear();
    }    
  }
   
  public class MyCanvas extends Canvas {
 
    public boolean cercle = true;
    public Aplig parent;
 
    public MyCanvas(Aplig parent) {
      super();
      this.parent = parent;
    }
     
    public void paint(Graphics g) {
      if (cercle) {
 g.setColor(Color.red);
 g.fillOval(70,100,100,100);
      } else {
 g.setColor(parent.getBackground());
 g.fillRect(0, 0, getSize().width, getSize().height);
      }    
    }
     
    public void drawCircle() {
      cercle = true;
      repaint();
    }
     
    public void clear() {
      cercle = false;
      repaint();
    }
  }
}  
 
 
 
En effet, pour être sur de ce que l'on fait en AWT, il faut :
* Soit utiliser un canvas,
* soit modifier la méthode paint(Graphics g) des widgets.
 
Voila voila..