IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Type d'évennement lancé par MouseDragged()


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Par défaut Type d'évennement lancé par MouseDragged()
    Bonjour à tous, voilà j'ai un MouseMotionListener sur un panneau, mais y a un stress :
    Quand mouseDragged est lancé, je n'identifie pas le bouton qui l'a lancé, je m'explique :
    je fais clic gauche que je maintiens enfoncé, et ensuite je bouge la souris. mouseeDragged est invoquée, mais e.getButton() == MouseEvent.BUTTON1 me retourne false....

    Comment ssavoir quel bouton est enfoncé?

  2. #2
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Une idée qui n'est certainement pas la meilleure ni la plus propre, mais qui marche : ta classe doit implémenter MouseListener et MouseMotionListener.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /**Booléens indiquant respectivement si le bouton 1 ou 2 de la souris a été cliqué*/
    boolean button1 = false ;
    boolean button2 = false ;
     
    public void mousePressed( MouseEvent e ) {
      if ( e.getButton() == MouseEvent.BUTTON1 )
        button1 = true ;
      else if ( e.getButton() == MouseEvent.BUTTON2 )
        button2 = true ;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void mouseDragged(MouseEvent evt) {
      if( button1 ) {
        // Action bouton 1
      }
      if( button2 ) {
        // Action bouton 2
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void mouseReleased( MouseEvent e ) {
      button1 = false ;
      button2 = false ;
    }
    Si quelqu'un a une autre solution ça m'intéresse aussi .

  3. #3
    Membre éclairé Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Par défaut
    J'ai testé tous les événements en fait mouseDragdeg() renvoie tjrs NOBUTTON, alors je me suis dit j'ai qu'à mettre une instance dans le listener pour le dernier click (1 pour BUTTON1 et 3 pour BUTTON3 incrémentée dans mousePressed) mais ça marchait pas, en fait il faut que les instances soient placées dans le composant dnt les événements sont écoutés (le composant où on fait addMouseMotionListener( ... ) ) et comme ça ça marche.

    Voilà c'est tout.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour,

    Le code ci-dessous fonctionne chez moi.
    "Draggez" la souris, et le bouton utilisé s'affiche sur la sortie standard.
    En espérant que cela puisse aider.

    Nicolas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    // appeler le fichier Exemple062_mouseDraggedQuelBouton.java
     
    import java.awt.event.*;
    import javax.swing.*;
     
    // par Nicolas_75, 26 août 2006
    // http://www.developpez.net/forums/showthread.php?t=217381
     
    public class Exemple062_MouseDraggedQuelBouton extends JFrame {
     
        public Exemple062_MouseDraggedQuelBouton() {
            this.setSize(400,400);
            this.setResizable(false);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.addMouseMotionListener(new MouseMotionAdapter() {
                public void mouseDragged(MouseEvent e) {
                    System.out.print("Dragged to "+e.getPoint()+" with ");
                    int modif = e.getModifiers();
                    if ((modif & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {
                        System.out.println("button 1");
                    }
                    if ((modif & InputEvent.BUTTON2_MASK) == InputEvent.BUTTON2_MASK) {
                        System.out.println("button 2");
                    }
                    if ((modif & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) {
                        System.out.println("button 3");
                    }
                }
            });
        }
     
        public static void main(String[] args) {
            Exemple062_MouseDraggedQuelBouton frame = new Exemple062_MouseDraggedQuelBouton();
            frame.setVisible(true);
        }
    }

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 15
    Par défaut une solution complète...
    Bonjour,

    Je réveille ce vieux poste pour y proposer ma solution. Elle peut toujours servir !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    // appeler le fichier Exemple062_mouseDraggedQuelBouton.java
     
    import java.awt.event.InputEvent;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionAdapter;
     
    import javax.swing.JFrame;
     
    // par Nicolas_75, 26 août 2006
    // Modifié par Metalm77, le 4 octobre 2010
    // http://www.developpez.net/forums/showthread.php?t=217381
    // http://www.developpez.net/forums/d217381/java/interfaces-graphiques-java/type-devennement-lance-mousedragged/
     
    public class Main extends JFrame {
     
    	private static final int DEFAULT_VALUE_DELAY_MOUSE_DRAGGED = -1;
    	private static final long DELAY_MOUSE_DRAGGED_CLICKED = 300;
     
    	private long delayDraggredMouse = DEFAULT_VALUE_DELAY_MOUSE_DRAGGED;
    	private boolean draggredMouse = false;
     
    	public Main() {
    		this.setSize(400, 400);
    		this.setResizable(false);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.addMouseListener(new MouseListener() {
     
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				System.out.println("ça clique !");
    			}
     
    			@Override
    			public void mouseEntered(MouseEvent e) {
    				// TODO Auto-generated method stub
     
    			}
     
    			@Override
    			public void mouseExited(MouseEvent e) {
    				// TODO Auto-generated method stub
     
    			}
     
    			@Override
    			public void mousePressed(MouseEvent e) {
    				// TODO Auto-generated method stub
     
    			}
     
    			@Override
    			public void mouseReleased(MouseEvent e) {
    				if (!draggredMouse && delayDraggredMouse != DEFAULT_VALUE_DELAY_MOUSE_DRAGGED) {
    					mouseClicked(e);
    				}
    				delayDraggredMouse = DEFAULT_VALUE_DELAY_MOUSE_DRAGGED;
    				draggredMouse = false;
    			}
     
    		});
    		this.addMouseMotionListener(new MouseMotionAdapter() {
    			public void mouseDragged(MouseEvent e) {
    				int modif = e.getModifiers();
    				if ((modif & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {
    					if (delayDraggredMouse == DEFAULT_VALUE_DELAY_MOUSE_DRAGGED) {
    						delayDraggredMouse = System.currentTimeMillis();
    					} else {
    						if (System.currentTimeMillis() - delayDraggredMouse > DELAY_MOUSE_DRAGGED_CLICKED) {
    							System.out.println("ça drague !");
    							draggredMouse = true;
    						}
    					}
    				}
    			}
    		});
    	}
     
    	public static void main(String[] args) {
    		Main frame = new Main();
    		frame.setVisible(true);
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transmettre des commandes à un process lancé par ksh
    Par jojolepabo dans le forum Linux
    Réponses: 3
    Dernier message: 19/10/2005, 16h05
  2. Réponses: 10
    Dernier message: 08/02/2005, 16h04
  3. [Débutant(e)] Ou trouver la commande lancée par eclipse
    Par Emdis dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 25/11/2004, 11h00
  4. [type MIME] css généré par php -> probleme
    Par prgasp77 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 23/09/2004, 21h13
  5. Réponses: 10
    Dernier message: 18/11/2003, 18h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo