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

AWT/Swing Java Discussion :

[swing]Probleme avec clique droit de la souris


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut [swing]Probleme avec clique droit de la souris
    Bonsoir, j'ai un ptit probleme avec mon clique droit. Comment savoir dans la méthode MouseClicked sur quel bouton j'ai cliqué droit ??

    le GetBouton me renvoi un entier ...et avec le GetComponent que j'ai casté en Jbutton mais fonctionne pas apparemment .Il ne me renvoie pas le bouton cliqué .
    En fait pour etre plus precis : j'ai une grille avec 81 cases .

    Chaque case est composé d'un panel (avec CardLayout) 2 composant dans ce card layout -> 1 panel avec 9 boutons et 1 bouton simple .

    Je voudrais que quand je clique gauche qu'il me modifie un texte et quand je clique droit qu'il switch de composant du panel ...( de tel facon que si c'était un panel de 9 bouton au départ que ca soit celui avec 1 bouton..)

    Pour ce faire j'ai besoin de savoir sur quel bouton je clique droit pour pouvoir remonter au parent( le panel) et ainsi switcher de composant )

    J'ai pas l'impression d'avoir été clair en tous cas mreci du coup de main

    @ ++

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je suis pas tout à fait sur, mais je crois que le clic droit c'est ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(e.getButton() == MouseEvent.BUTTON_3)

  3. #3
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    Oui c'est bien cela merci mais ma question n'est pas ca ... Le bouton sur lequel on clique droit ... c'est celui là que je voudrais savoir ...

    Merci

  4. #4
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    Help please

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 128
    Par défaut
    Tu devrais mettre un MouseListener sur chacun de tes boutons, et ensuite détecter le clic droit (cf le code de wichtounet).

  6. #6
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    Oui merci cela est fait mais je voudrais savoir sur quel bouton je clique droit...

    avec GetSource ca ne renvoie pas le bouton apparemment

  7. #7
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Si ! getSource() te renvoit une référence au composant qui a reçu l'événement. Si ce composant est un bouton, on peut dire que cette méthode "retourne" le bouton.

  8. #8
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    Ok , Dans ce cas je ne comprend pas pourquoi ce foutu code ne fonctionne pas :


    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
    	public void MouseClicked (MouseEvent ev){
     
     
    					      if((ev.getModifiers() & InputEvent.BUTTON1_MASK)!=0){ // si bouton droit
     
    					    	System.out.println("bouton1");
    					    	 JButton obj=(JButton) ev.getSource();
    					    	//si case  vide -> ajout possibilite
    					    	if (obj.getText().equals("")) {
     
    					    		obj.setText(Modele.value);
    					    	}
     
    					    	// si case remplie -> on vide la case
    					    	else{ 
    					    		JButton obj1= (JButton) ev.getSource();
    					    		obj1.setText("");
     
    					    	}
     
    					      }
    					    	//si bouton gauche -> placement
    					    	else if ((ev.getModifiers()& InputEvent.BUTTON3_MASK)!=0){
    					    		System.out.println("bouton3");
    					    		JButton obj= (JButton) ev.getSource();
    					    		JPanel carte= (JPanel) obj.getParent().getParent();
    					    		pile.next(carte);
     
     
     
     
    					      }
    Un grand merci pour votre patience

  9. #9
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Je vois pas trop...
    Quelques conseils :
    Verifie bien que chacun de tes boutons ont un listener ( addMouseListener ).
    Rajoute quelques "println" dans ton code pour vérifier le contenu des différentes variables.

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 128
    Par défaut
    Deux qeustions:
    - qu'est-ce qui ne marche pas (précisément)
    - ton MouseListener est placé sur quel composant?

  11. #11
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    Voilà le code un peu plus complet , on voit bien que chaque bouton a un mouseListener . Rien ne fonctionne, une journée entiere pour ce probleme de merde !!! je pari que c'est une connerie en plus !!

    Je voudrais que lorsqu'on clique droit sur un bouton , je met à jour le texte de ce bouton

    et si clique gauche alors je change de composant de la pile ... (cfr cardlayout )

    Pitié aidez moi à trouver ce qui foire ... je suis en train de péter un cable ... Tout me semble logique pourtant ...

    Un grand merci en tous cas

    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
    for (int j=0;j<9;j++) { // case
     
    			    JPanel carte= new JPanel(pile);
    				JButton bouton_finale= new JButton();
    				JPanel possibilite= new JPanel( new GridLayout(3,3));
     
    				for (int k=0;k<9;k++)
     
    				{
    					JButton bposs= new JButton();
    					bposs.MouseListener(new MouseAdapter() {
     
    						public void MouseClicked(MouseEvent ev){
     
     
    					      if((ev.getModifiers() & InputEvent.BUTTON1_MASK)!=0){ // si bouton droit
     
    					    	System.out.println("bouton1");
    					    	 JButton obj=(JButton) ev.getSource();
    					    	//si case  vide -> ajout possibilite
    					    	if (obj.getText().equals("")) {
     
    					    		obj.setText(Modele.value);
    					    	}
     
    					    	// si case remplie -> on vide la case
    					    	else{ 
    					    		JButton obj1= (JButton) ev.getSource();
    					    		obj1.setText("");
     
    					    	}
     
    					      }
    					    	//si bouton gauche -> placement
    					    	else if ((ev.getModifiers()& InputEvent.BUTTON3_MASK)!=0){
    					    		System.out.println("bouton3");
    					    		JButton obj= (JButton) ev.getSource();
    					    		JPanel carte= (JPanel) obj.getParent().getParent();
    					    		pile.next(carte);
     
     
     
     
    					      }
     
     
    					}});
     
    				possibilite.add(bposs);
    				}
     
    				bouton_finale.addMouseListener(new MouseAdapter() {
     
    					public void MouseClicked(MouseEvent arg0) {
     
    						if ((arg0.getModifiers()& InputEvent.BUTTON1_DOWN_MASK)!=0){
    						JButton obj= (JButton) arg0.getSource();
    						obj.setText(Modele.value);
    						}
     
     
    						else {
     
    							JButton obj= (JButton) arg0.getSource();
    							JPanel carte= (JPanel) obj.getParent().getParent();
    							pile.next(carte);
     
    						}
     
     
    					}
     
     
    				});

  12. #12
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    M'enfin tu aurais pu ajouter le meme listener a tes 81 bouttons et faire la difference sur le bouton clique via event.getSource() ca economiserai un peu plus la memoire. Tu peux aussi affecter une action command, leur index par exemple, via setActionCommand(String value) a chacun des boutons pour les distinguer les un des autres.

    Autre chose si au lieu de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JPanel carte= new JPanel(pile); 
    JPanel possibilite= new JPanel( new GridLayout(3,3));
    Tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    final JPanel carte= new JPanel(pile); 
    final JPanel possibilite= new JPanel( new GridLayout(3,3));
    Tu pourras alors directement appeler et faire des actions sur les variables carte et possibilite depuis le code de ton listener.

    Sinon pour la detection du click droit il y a SwingUtilities.isRightMouseButton(event)* et/ou event.isPopupTrigger()** ?

    * devrait egalement renvoyer true si le bouton gauche est utilise et que les boutons de la souris sont inverses dans les parametres souris de Windows (je crois a verifier).

    ** utile egalement pour les Mac et autres ordis n'ayant qu'un bouton sur leur souris et ou les popup s'affiche via POMME ou CTRL + click.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  13. #13
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    Merci pour ces conseils ..

    Bonne nuit

  14. #14
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Citation Envoyé par issou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JButton bposs= new JButton();
    bposs.MouseListener(new MouseAdapter() {...});
    Ca compile ça ?? Essaye plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bposs.addMouseListener(new MouseAdapter() {...});
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Salut !

    Je suis dans la même galère que Issou (normal, on a le même cours ); je n'ai pas bien compris le sens de ton intervention, Bouye ...
    Peux-tu un peu expliciter ?

    Grand merci !

  16. #16
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Il ne sert pas a grand chose de definir 1 listener different specifique par bouton surtout lorsque les traitements sont absoluments 100% identiques.

    Qq chose de similaire a ca (a tester bien sur) :

    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
     
    final JPanel carte= new JPanel(pile); 
    final JPanel possibilite= new JPanel( new GridLayout(3,3)); 
     
    JButton bouton_finale= new JButton(); 
    bouton_finale.setActionCommand("finale"); // Mettre cette valeur dans une constante.  
     
    MouseListener buttonListener = new MouseAdapter() { 
     
      /** @inheritDoc
      */                   
      @Override public void mousePressed(MouseEvent ev) {  
        JButton obj = (JButton)ev.getSource();
        ////////////////////
        // bouton_finale. //
        ////////////////////
        if (obj.getActionCommand().equals("finale")) { // On aurait pu aussi declarer bouton_finale en "final" et faire un test == sur les references.
          System.out.println("Bouton_finale presse."); 
          if (SwingUtilities.isRightMouseButton(ev) || ev.isPopupTrigger()) { // si boutton droit enfonce. 
          // if (!SwingUtilities.isLeftMouseButton(ev)) {
            obj.setText(Modele.value); 
          } 
          else { 
            pile.next(carte); 
          }
       }
     
      /** @inheritDoc
      */                   
      @Override public void mouseClicked(MouseEvent ev) {                       
        JButton obj = (JButton)ev.getSource();
     
        ///////////////////
        // Autre bouton. //
        ///////////////////
        if (!obj.getActionCommand().equals("finale")) { // On aurait pu aussi declarer bouton_finale en "final" et faire un test != sur les references.
          System.out.println("Bouton " + obj.getActionCommand() + "clique."); 
          if (SwingUtilities.isRightMouseButton(ev) || ev.isPopupTrigger()) { // si bouton droit. 
            //si case  vide -> ajout possibilite 
            if (obj.getText().equals("")) {                         
              obj.setText(Modele.value); 
            }               
            // si case remplie -> on vide la case 
            else{ 
              obj.setText("");                           
            } 
          } 
          //si bouton gauche -> placement 
          else if (SwingUtilities.isLeftMouseButton(ev)) { 
            pile.next(carte);
          }                                         
        }
      }
    }); 
     
    bouton_finale.addMouseListener(buttonListener);
    for (int k=0;k<9;k++) { 
      JButton bposs= new JButton(); 
      bposs.setActionCommand(String.valueOf(k));
      bposs.addMouseListener(buttonListener);
      possibilite.add(bposs); 
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Merci !

    Je teste et je dis quoi !

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    C'est bon, ca roule impec

    Merci encore !

Discussions similaires

  1. problème avec Click droit de la souris
    Par patou41000 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 22/05/2007, 10h32
  2. [Swing] Probleme avec un JDateChooser
    Par Sylmandel dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 05/04/2006, 10h04
  3. Probleme avec la roulette de la souris dans VBE
    Par GESCOM2000 dans le forum Access
    Réponses: 3
    Dernier message: 04/02/2006, 16h53
  4. Ajout de menu perso sur clique droit de la souris !!
    Par Kyp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/12/2005, 17h06
  5. [debutant][swing] Probleme avec un Jpanel
    Par JeanMoul dans le forum Débuter
    Réponses: 6
    Dernier message: 27/08/2005, 19h07

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