[java] gestion d'évenement ? y a un hic qqpart

gestion d'évenement ? y a un hic qqpart [java] - Programmation

Marsh Posté le 10-07-2001 à 15:36:33    

je mes le code c'est plus simple;
voilà le problème c'est que quand on clic sur le bouton "cercle" y'a pas de dessin qui aparait ???? et je vois pas pourquoi !!!
 
 
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" );
 Panel pan1=new Panel();
 
 public Aplig(){
  setLayout(new BorderLayout());
  pan1.add(bcercle);pan1.add(beffacer);pan1.add(bq
uitter);
  bquitter.addActionListener(this);
  bcercle.addActionListener(this);
  beffacer.addActionListener(this);
  add(pan1);  
  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){
    g.setColor(Color.red);
    g.fillOval(70,100,100,100);
    }
   else if (evt==beffacer){
    g.setColor(getBackground());
    g.fillRect(0,0,400,600);
    }    
  }
 
}

Reply

Marsh Posté le 10-07-2001 à 15:36:33   

Reply

Marsh Posté le 10-07-2001 à 16:34:08    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed