[Résolu] Connaitre le bouton appuyé lors d'un drag&drop?

Connaitre le bouton appuyé lors d'un drag&drop? [Résolu] - Java - Programmation

Marsh Posté le 25-08-2006 à 10:50:57    

Salut à tous.
 
Voila, je bricole un espece de paint vectoriel qui marche pas trop mal. Cependant, j'ai quelques bugs au niveau de la gestion de la souris. Lors d'un d'un drag & drop sur mon panel, il me faut faire le distinction entre le bouton gauche (dessiner) et droit (rien dessiner)
 
voila un bout de code:

Code :
  1. //Ajout d'un écouteur sur la souris
  2.       addMouseMotionListener(new MouseMotionAdapter()
  3.       {
  4.             //la souris bouge avec un bouton maintenu enfonçé
  5.             public void mouseDragged(MouseEvent event)
  6.             {
  7.                 //Si on n'est pas en mode sélection, on modifie les champs x2 et y2 de manière à ce que la forme "suive" le curseur en mode dessin
  8.                 if(!select && event.getButton() != 3)
  9.                 {
  10.                    x2 = event.getX();
  11.                    y2 = event.getY();
  12.                    repaint();
  13.                 }
  14.                 //Si une forme est sélectionnée, on la déplace
  15.                 else if(selected)
  16.                 {
  17.                     x2 = event.getX();
  18.                     y2 = event.getY();
  19.                     selectedShape.translate(x2 - x1, y2 - y1);
  20.                     repaint();
  21.                     x1 = x2;
  22.                     y1 = y2;
  23.                 }
  24.             }
  25.        });


 
Le problème est que le event.getButton() renvoie le bouton qui change d'état. Par définition, y'a pas de changement d'état dans un drag&drop. Quelqu'un a une autre solution que de sauver le bouton cliqué dans une variable lors du mousePressed ?
 
Merci


Message édité par GroXx le 26-08-2006 à 15:24:42
Reply

Marsh Posté le 25-08-2006 à 10:50:57   

Reply

Marsh Posté le 26-08-2006 à 05:46:12    

Bonjour,
 
As-tu regardé InputEvent.getModifiers()  ?
 
Nicolas

Reply

Marsh Posté le 26-08-2006 à 12:53:13    

Salut,
 :hello:  
J'ai essayé d'utiliser le getModifiersEx de cette manière:

Code :
  1. public void mouseDragged(InputEvent event)
  2.             {
  3.                 //Si on n'est pas en mode sélection, on modifie les champs x2 et y2 de manière à ce que la forme "suive" le curseur en mode dessin
  4.                 if(!select && event.getModifiersEx() == BUTTON1_DOWN_MASK)
  5.                 {
  6.                    x2 = event.getX();
  7.                    y2 = event.getY();
  8.                    repaint();
  9.                 }


 
Mais ca a pas l'air de vouloir compiler (cannot resolve symbol), pourtant je pense avoir fait tous les import nécessaires. On s'en sert comment de ce bazar? :heink:

Reply

Marsh Posté le 26-08-2006 à 14:33:02    


Le code ci-dessous fonctionne chez moi. Il faut "dragger" la souris sur la JFrame, et le numéro du bouton de la souris utilisé s'affiche sur la sortie standard.
 
Nicolas
 

Code :
  1. // Nicolas_75, 26 août 2006
  2. // appeler le fichier Exemple062_mouseDraggedQuelBouton.java
  3. import java.awt.event.InputEvent;
  4. import java.awt.event.MouseEvent;
  5. import java.awt.event.MouseMotionAdapter;
  6. import javax.swing.JFrame;
  7. public class Exemple062_mouseDraggedQuelBouton extends JFrame {
  8.    
  9.     public Exemple062_mouseDraggedQuelBouton() {
  10.         this.setSize(400,400);
  11.         this.setResizable(false);
  12.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  13.         this.addMouseMotionListener(new MouseMotionAdapter() {
  14.             public void mouseDragged(MouseEvent e) {
  15.                 System.out.print("Dragged to "+e.getPoint()+" with " );
  16.                 int modif = e.getModifiers();
  17.                 if ((modif & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {
  18.                     System.out.println("button 1" );
  19.                 }
  20.                 if ((modif & InputEvent.BUTTON2_MASK) == InputEvent.BUTTON2_MASK) {
  21.                     System.out.println("button 2" );
  22.                 }
  23.                 if ((modif & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) {
  24.                     System.out.println("button 3" );
  25.                 }
  26.             }
  27.         });
  28.     }
  29.    
  30.     public static void main(String[] args) {
  31.         Exemple062_mouseDraggedQuelBouton frame = new Exemple062_mouseDraggedQuelBouton();
  32.         frame.setVisible(true);
  33.     }
  34. }

Reply

Marsh Posté le 26-08-2006 à 15:23:41    

Okay ca marche nickel ! J'avais pas trop capté comment me servir du masque...
Merci beaucoup, Nico ;)

Reply

Marsh Posté le 26-08-2006 à 15:30:49    

Je t'en prie.  :)

Reply

Sujets relatifs:

Leave a Replay

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