implements MouseListener

implements MouseListener - Java - Programmation

Marsh Posté le 06-01-2005 à 19:08:53    

Bonjour,
 
Je fais des petits prog pour apprendre, et la j'aimerais combiné la position de la souris (ca marche), mais je ne sais pas trop comment ajouté le nombre de click, ca marche une fois et apres ca bug, et je ne trouve ca pas tres elegant.
Un petit conseil de technique ou autre serait sympa, merci
 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. public class Evenements extends JFrame {
  5. private JPanel surface = new JPanel();
  6. private Coordonnees coordonnees = new Coordonnees();
  7. private Click click = new Click();
  8. private int a= 0;
  9. public static void main (String args[]) {
  10.  new Evenements().show();
  11. }
  12. public Evenements(){
  13.  setTitle("Click clack !! oups" );
  14.  setSize(300,300);
  15.  surface.setBackground(Color.blue);
  16.  getContentPane().add(click, BorderLayout.EAST);
  17.  getContentPane().add(surface, BorderLayout.CENTER);
  18.  getContentPane().add(coordonnees, BorderLayout.SOUTH);
  19.  surface.addMouseListener(coordonnees);
  20.  surface.addMouseListener(click);
  21.  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  22. }
  23. }
  24. class Coordonnees extends JLabel implements MouseListener {
  25. public Coordonnees() {
  26.  super("Coordonnees de la souris" );
  27. }
  28. public void mouseClicked (MouseEvent e) {
  29.  setText("Coordonnees de la souris "+"("+e.getX() + ", "+e.getY()+')');
  30. }
  31. public void mouseEntered (MouseEvent e) {}
  32. public void mouseExited (MouseEvent e) {}
  33. public void mousePressed (MouseEvent e) {}
  34. public void mouseReleased (MouseEvent e) {}
  35. }
  36. class Click extends JLabel implements MouseListener {
  37. public Click() {
  38.  super("Nombre de click appui" );
  39. }
  40. public void mouseClicked (MouseEvent e) {}
  41. public void mouseEntered (MouseEvent e) { }
  42. public void mouseExited (MouseEvent e) {}
  43. public void mousePressed (MouseEvent e) {
  44.  a += e.getClickCount();
  45.  setText("Nombre de click appui "+a);
  46. }
  47. public void mouseReleased (MouseEvent e) {}
  48. }

Reply

Marsh Posté le 06-01-2005 à 19:08:53   

Reply

Marsh Posté le 06-01-2005 à 19:18:44    

A vu de pif, ça m'etonnerais que ça marche car dans ta classe click tu t'adresse à une variable a qui n'est pas 'visible' depuis click...
 
Dans un premier temps, je te conseil d'implementer tes listener en classe anonyme, c'est à dire :
 
 
 

Code :
  1. truc.addMouseListener(new MouseAdapter(){
  2.   public void mouseClicked(MouseEvent e){
  3.     //Ici tu as accés à tout les élément globaux de la classe dans  
  4.     //   laquelle tu est implémenté
  5.   }
  6. });


 
 
 
Je sais pas si je suis clair pour toi... Ah oui! le mouse adapter ça sert à eviter d'avoir à ecrire des corps de methode vides.

Reply

Marsh Posté le 06-01-2005 à 20:04:01    

Wouahhhh c coool ! ca avance, et c plus propre ce mouse adapter !
Mais j'ai perdu la position de la souris, je ne comprends pas trop j'ai pas changé cette partie du code (qui est d'ailleurs comme celle ce click et click2), et ca marche plus !! :??:  
 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. public class Evenements2 extends JFrame {
  5. private int a= 0;
  6. private int b= 0;
  7. private JPanel surface = new JPanel();
  8. private JLabel coordonnees = new JLabel ("Coordonnees de la souris" );
  9. private JLabel click = new JLabel ("Click de la souris pressed" );
  10. private JLabel click2 = new JLabel ("Click de la souris released" );
  11. public static void main (String args[]) {
  12.  new Evenements2().show();
  13. }
  14. public Evenements2 () {
  15.  setTitle("Click click !!" );
  16.  setSize(300,300);
  17.  surface.setBackground(Color.blue);
  18.  getContentPane().add(click, BorderLayout.NORTH);
  19.  getContentPane().add(click2, BorderLayout.EAST);
  20.  getContentPane().add(surface, BorderLayout.CENTER);
  21.  getContentPane().add(coordonnees, BorderLayout.SOUTH);
  22.  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  23.  surface.addMouseListener(new MouseAdapter(){
  24.   public void mouseCliked (MouseEvent e) {
  25.    coordonnees.setText("("+e.getX() + ", "+e.getY()+')');
  26.   }
  27.   public void mousePressed (MouseEvent e) {
  28.    a += e.getClickCount();
  29.    click.setText("Nombre de click pressed "+a);
  30.   }
  31.   public void mouseReleased (MouseEvent e) {
  32.    b += e.getClickCount();
  33.    click2.setText("Nombre de click released "+b);
  34.   }
  35.  });
  36. }
  37. }


Reply

Marsh Posté le 06-01-2005 à 21:25:08    

public void mouseClicked (MouseEvent e) ...
Il y a au moins un avantage en tout cas avec les interfaces c'est que lorsque l'on faite une faute sur l'orthographe d'une méthode ça ne compile pas.

Reply

Marsh Posté le 06-01-2005 à 22:43:38    

Et si le pire c'est que ca passait à la compilation !
 
merci en tout cas !!

Reply

Marsh Posté le 06-01-2005 à 22:44:39    

MansTrop a écrit :

Et si le pire c'est que ca passait à la compilation !


mais oui mais oui [:trofub]


Message édité par the real moins moins le 06-01-2005 à 22:44:45

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 06-01-2005 à 22:52:59    

Je ne suis pas encore un vieux sage qui fume la pipe, mais en tout cas je ne suis pas de mauvaise foi. (fais le test, tu verras).
Mais je remercie encore votre aide à tous.
J'apprends et j'apprends toujours plus...

Reply

Marsh Posté le 06-01-2005 à 23:03:11    


bha oui ca passait si il héritait de l'adapter :o


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 06-01-2005 à 23:07:54    

ha oui, tout juste auguste [:slackerbitch]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 07-01-2005 à 08:32:54    

C'est pour cela que j'ai signalé qu'avec une interface cela n'aurait pas compilé.

Reply

Marsh Posté le 07-01-2005 à 08:32:54   

Reply

Marsh Posté le 07-01-2005 à 10:15:28    

phnatomass a écrit :

C'est pour cela que j'ai signalé qu'avec une interface cela n'aurait pas compilé.


 
Yep c'est vrai mais c'est un tout petit peu chiant d'heriter de toutes les methodes...quoique dans cet exemple vu que tu utilises pas mal des methodes tu aurais pu le faire... :D  

Reply

Marsh Posté le 07-01-2005 à 19:28:26    

ben tu coches le inherit abstract methods, et ca te fout les stubs tout seul ...


---------------
Jubi Photos : Flickr - 500px
Reply

Sujets relatifs:

Leave a Replay

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