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..