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

Composants Java Discussion :

[debutant][JButton] clic droit


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Par défaut [debutant][JButton] clic droit
    bonjour a tous
    j'espere deja que je ne me suis pas trompé de categorie, ni dans mon sujet

    mon probleme:
    j'ai un projet a faire, un demineur, et je ne sais pas comment capter un clic droit sur un bouton

    petite explication:
    j'ai un Jpanel qui contient tous mes boutons, et chacun a un addActionListener et quand je clique dessus, ca me donne le bouton que j'ai cliqué et je peu donc interagir comme il le faut.
    Mais ca c'est pour un clic gauche normal, et je ne sais pas comment faire pour savoir si c'est un clic droit ou pas.

    j'ai fait des recherches (google, sur le forum, dans les FAQ...) mais on me parlait et ils disaient de la faire avec MouseListener.
    et moi dans un livre, ils m'ont dit que le MouseListener etait pour les JPanel alors que moi je le veux sur un bouton.

    j'espere avoir bien expliqué
    Je vous remercie

  2. #2
    Membre émérite
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Par défaut
    A ton bouton tu lui ajoute un addActionListener puis tu captes le bouton cliqué par la souris
    un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    btn.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    btnMouseClicked(evt);
                }
    private void btnMouseClicked(java.awt.event.MouseEvent evt) {
            if(evt.getButton()==3){
                //ton code
            }

    [ Doublons supprimés par BigBoomShakala ]

  3. #3
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Par défaut
    merci c-top
    je vais tester ca de suite

    mais une seule fois l'explication, ca m'aurait suffit

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Par défaut
    si c'est un démineur, alors je suppose que tu as plusieurs bouton dont le comportement serait quasi similaire.

    je te conseillerai donc que ta fenêtre principale implémente l'interface MouseListener et ensuite d'implémenter les méthodes adéquates correctement.

  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    personnellement je déconseille de mélanger l'interface et les évênements.
    le code devient rapidement difficile à lire, et ce n'est pas très logique.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Par défaut
    tu peux expliquer ce que tu veux dire bigboomshakala ?


    ce que je disais, c'est

    il a certainement une classe

    pblic class MonDemineur extends JFrame {
    private JButton []jButtons = new JButton[10*10];

    public MonDemineur() {
    for(int i = 0; i<10;i++) {
    for (iny j = 0; j< 10; j++) {
    jButtons[i][j] = new JButton();
    }
    }
    }

    si il fait la méthode de c-top, ca marcherais et aurait un truc comme

    public class MonDemineur extends JFrame {
    private JButton []jButtons = new JButton[10*10];

    public MonDemineur() {
    for(int i = 0; i<10;i++) {
    for (iny j = 0; j< 10; j++) {
    jButtons[i][j] = new JButton();
    jButtons[i][j].addMouseListener( new .... et implémentant 5 ou six méthodes tels que mouseMoved, mouseClicked, mousePressed, mouseReleased ....);
    }
    }
    }

    ce qui ne serait pas très propres.


    Par contre, avec un code comme


    public class MonDemineur extends JFrame implements MouseListener {
    private JButton []jButtons = new JButton[10*10];

    public MonDemineur() {
    for(int i = 0; i<10;i++) {
    for (iny j = 0; j< 10; j++) {
    jButtons[i][j] = new JButton();
    jButtons[i][j].addMouseListener(this);
    }
    }

    et aussi l'implémentation des cinq ou six méthode mouseMoved, mouseReleased ... et dans le mouseClicked
    public void mouseClicked(MouseEvent e) {
    if (SwingUtilities.isRightMouseButton(e)) {
    // je viens de cliquer sur un bouton du terrain de mines avec le bouton droit.
    }
    }
    }

    Au passage, je voulais juste préciser que le SwingUtilities.isRightMouseButton(MouseEvent ) est plus propre que le mouseEvent.getButton() == 3.


    Maintenant, ce n'est que mon avis, mais vu que la gestion des évènement est fortement couplée aux interfaces dans Swing, mais je ne vois pas ce que voulait dire bigboomshakala

    tu peux expliquer ta remarque stp ?

  7. #7
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Par défaut
    wow, merci pour toutes ces reponses

    je viens de tester les deux manieres, mais il y a un petit probleme qui revient:

    ce que je voudrais savoir, c'est sur quel bouton j'ai cliqué, mais je n'y arrive pas (je ne suis peut etre tout simplement pas doué )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for (int j=0; j<iMax; j++) 
       {
         if (caseDem[j]==0)
             {
               tabBouton[j]=new JButton(img);
               this.add(tabBouton[j]);
               String str= "bouton"+j;
               tabBouton[j].setActionCommand(str);
               tabBouton[j].addActionListener(this);
    .....
    .....
    iMax est le nombre de case en tout
    caseDem est un tableau qui me dis si la case est decouverte ou non, ou si il y a un drapeau dessus
    et si je ne recupere pas mon j, je ne peux pas afficher le petit drapeau sur la case pour dire qu'il y a une mine en dessous

    faut il que je supprime mon actionListener?? et a la place mettre le mouseListener??

    ou peut on faire comme avec le actionListener, mettre une sorte de code avec setActionListener qui le recupere avec getActionCommand

    merci beaucoup en tout cas

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Par défaut
    je vois que tu as un setActionCommand(str) et un addActionListener(this).
    donc dans le code de ton actionPerformed tu peux faire un truc comme

    public void actionPerformed(ActionEvent e) {
    e.getActionCommand()
    }

    e.getActionCommand te renverra la str lié au button

    et

    e.getSource te renverra le bouton a caster correctement si besoin est !!!

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Par défaut
    tu devras aussi changer en MouseListener sinon, tu ne pourras pas savoir que tu as cliqué avec le bouton droit de ta souris.

    en changeant, tu n'auras plus le actionCommand et la seule (je sais c'est pas tout a fait vrai) façon de retrouver le boutton, c'est le getSource.

    Donc, a la place de ton setActionCommand, je mettrai un setName sur le bouton [i][j] et ensuite, dans ton mouseClicked tu caste le getSource en JButton et tu récupère le getName()

    à tester !

  10. #10
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Par défaut
    ok, merci
    je vais tester ca alors, en esperant que ca marche
    c'est sympa

    et pour caster en JButton... je fais comment, je suis pas trop doué la dedans
    JButton jb=(JButton)e.getSource();
    c'est comme ca qu'on fait??

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Par défaut
    oui c'est bien comme ca.
    mais évite de faire ca comme ca.

    déclare comme attribut de ta classe un bouton temporaire pour éviter de le récréer chaque fois.

    je m'explique:

    public class MonDemineur extends JFrame implement MouseListener {

    JButton buttonTemporaire = null;

    le constructeur


    les méthodes a implémenter de mouse listener dans entre autre

    public mouseClicked(MouseEvent e) {
    buttonTemporaire = (JButton) e.getSource();
    }
    }


    tu comprend ?

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Par défaut
    tu n'a pas une solution à mon problème ? celui avec la génération de documents ? c'est vraiment important !!!

  13. #13
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Par défaut
    oui, j'ai bien compris (enfin je pense)
    je vais tester et je marquerai le resultat en esperant qu'il soit positif

    et desolé pour ton probleme, mais je ne sais meme pas ce qu'est un .dot et comment on s'en sert
    mais sinon ca aurait ete avec plaisir et je l'aurai surement deja fait
    mais le java, c'est pas trop mon point fort, je prefere php

    merci

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Par défaut
    java, c, c++, php, cobol ... tout sauf .net pour finir, on revient toujours a la meme chose-> des lignes de codes mais avec php tu aurais un peu de mal a faire un démineur
    j'espere quand meme que quelqu'un pourra m'aider

  15. #15
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Par défaut
    Citation Envoyé par avoiture
    ...mais avec php tu aurais un peu de mal a faire un démineur
    c'est sur, et je pense aussi que c'est pour ca que mon prof nous a demandé de le faire en java
    mais c'est peut etre faisable en html, a tester

    et j'espere moi aussi que quelqu'un pourra t'aider
    bon courage en tout cas et merci

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Par défaut
    en html directement ca va être dur. je dis infasable jusqu'a preuve du contraire, bien sur, sans javascript, vbscript, dhtml ou autre...
    je veux voir ça

  17. #17
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Par défaut
    je viens de tester, et ca marche nikel !!

    merci !!

    petit recapitulatif

    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
     
    public class Demineur extends JPanel implements MouseListener{
     
    ......
    ......
     
    this.add(tabBouton[j]);
    String str= "bouton"+j;
    tabBouton[j].setName(str);
    tabBouton[j].addMouseListener(this); 
    ......
    ......
    public void mouseExited(MouseEvent e) {}	
    public void mouseEntered(MouseEvent e) {}	
    public void mouseReleased(MouseEvent e) {}	
    public void mousePressed(MouseEvent e) {}	
    public void mouseClicked(MouseEvent e) { 
    	if (SwingUtilities.isRightMouseButton(e)) { 
      		buttonTemporaire = (JButton) e.getSource();
    		String str=buttonTemporaire.getName();
                                    ........
                                   }
    }
    c'est cool
    merci avoiture et aux autres aussi

    je vais pouvoir continuer mon projet et pouvoir revenir vous poser plein de question
    merci !!


    et pour le demineur en html, je comprennais bien sur le javascript
    pour moi, le php,mysql,html et javascript forme un seul bloc
    car sinon, juste html qui est static, on aurai un peu de mal
    si j'ai le temp, j'essaye de le faire et je mettrai le lien mais c'est pas pour tout de suite

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

Discussions similaires

  1. Clic droit/gauche souris
    Par Mouse! dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 30/05/2013, 20h34
  2. clic droit sur un JButton
    Par barbiche dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 12/03/2007, 13h55
  3. [debutant][JButton] Modifier l'image
    Par Shooter dans le forum Composants
    Réponses: 3
    Dernier message: 16/07/2004, 15h57
  4. Réponses: 2
    Dernier message: 09/05/2003, 17h41
  5. Evènement sur clic droit !?
    Par soccersoft dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/12/2002, 21h39

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