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

 Java Discussion :

Jbutton et ActionListener


Sujet :

Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut Jbutton et ActionListener
    Bonjour,

    Je tente d'utiliser la méthode 3 du tutorial sur les ActionListener. Cependant, je n'arrive pas a récupérer l'action. Voici les classes en question :
    ButtonListener.java : ma classe qui traite les actions
    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
     
     
    package viewer;
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    class ButtonListener implements ActionListener {
     
        ButtonListener() {
        }
     
        public void actionPerformed(ActionEvent e) {
            if (e.getActionCommand().equals("up")) {
                System.out.println("JButtonUp has been clicked");
            }
            if (e.getActionCommand().equals("down")) {
                System.out.println("JButtonDown has been clicked");
            }
        }
    }
    JPanelControl.java : ma class qui créer mon JPanel avec tout mes boutons :
    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
     
    package viewer;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionListener;
    import javax.swing.*;
     
     
    public class JPanelControl extends JPanel implements ViewerConstants {
        public JPanelControl() {
            JButtonUp = new JButtonPan("up");
            JButtonUp.addActionListener(new ButtonListener());
     
            JButtonDown = new JButtonPan("down");
            JButtonDown.addActionListener(new ButtonListener());
    ...
    }
        private JButtonPan JButtonUp;
        private JButtonPan JButtonDown;
    }
    JbuttonPan.java
    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
    package viewer;
    import javax.swing.JButton;
    public class JButtonPan extends JButton {
        public JButtonPan(String icon){
     
            this.setIcon(new javax.swing.ImageIcon(getClass().getResource("../pics/".concat(icon).concat(".png")))); // NOI18N
            this.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
            this.setMaximumSize(new java.awt.Dimension(20, 20));
            this.setMinimumSize(new java.awt.Dimension(20, 20));
            this.setPreferredSize(new java.awt.Dimension(20, 20));
            this.setPressedIcon(new javax.swing.ImageIcon(getClass().getResource("../pics/".concat(icon).concat("p.png")))); // NOI18N
            this.setSelected(true);
     
        }
     
    }
    Lorsque je clique sur les boutons, je n'ai aucunes sorties dans ma console.

    Je sais que cette question a sûrement été traité mainte et mainte fois, cependant, j'ai tenté plusieurs méthodes pour récupérer le clique mais aucunes ne fonctionnent. J'ai tenté d'utiliser le debuger de NetBeans mais sans succès.

    Toutes documentations, bouts de code, liens sont les bienvenues ! Merci

  2. #2
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    l'actioncommand d'un bouton, c'est le texte que tu passes au constructeur de JButton quand tu le crée, ou bien tu peux aussi le modifier avec la méthode setActionCommand, donc mets le code dans lequel tu crée le bouton pour voir le texte que tu lui passes

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    Citation Envoyé par herch Voir le message
    salut,

    l'actioncommand d'un bouton, c'est le texte que tu passes au constructeur de JButton quand tu le crée, ou bien tu peux aussi le modifier avec la méthode setActionCommand, donc mets le code dans lequel tu crée le bouton pour voir le texte que tu lui passes
    Merci, maintenant que tu le dits, ça me parait un peu évident vue que je compare des string dans actionPerformed.

    J'ai mis à jour le code dans mon premier post. Cependant, le problème persiste !

    EDIT :

    J'ai également essayé ceci dans le constructeur de mes JButton mais rien..:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.addActionListener(new ButtonListener());
    EDIT2 : histoire d'avoir quelque chose de verbeux, j'ai ajouté un System.out.println(icon); dans le constructeur de mes boutons. Cependant, rien ne s'affiche dans la console de Netbeans ! J'utilise pourtant un System.out.println dans une autre partie du programme et celui-ci s'affiche...

  4. #4
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    le String que tu passes à ton bouton c'est le chemin d'une image, et tu utilises le constructeur qui attends un objet Icon et pas celui qui attends un String

    il faudra que tu définis l'actioncommand avec la méthode setActionCommand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JButtonUp.setActionCommand("up");
     
    JButtonDown.setActionCommand("down");

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    Citation Envoyé par herch Voir le message
    salut,

    le String que tu passes à ton bouton c'est le chemin d'une image, et tu utilises le constructeur qui attends un objet Icon et pas celui qui attends un String

    il faudra que tu définis l'actioncommand avec la méthode setActionCommand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JButtonUp.setActionCommand("up");
     
    JButtonDown.setActionCommand("down");
    J'ai ajouté ceci à mon constructeur JButtonPan (où icon est bien un String passé en argument de JButtonPan(String icon)):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setActionCommand(icon);
    Mais toujours rien..

    cependant, il ce peut que le problème vienne également d'ailleurs ; cf mon EDIT2 de mon second post :
    histoire d'avoir quelque chose de verbeux, j'ai ajouté un System.out.println(icon); dans le constructeur de mes boutons. Cependant, rien ne s'affiche dans la console de Netbeans ! J'utilise pourtant un System.out.println dans une autre partie du programme et celui-ci s'affiche...

  6. #6
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    un coup au hasard
    mets un au début du constructeur de ton bouton

    mais sinon je ne vois d'où peut venir le problème

    [EDIT]

    le problème ne vient pas de super(), en fait, il y a aucun problème. Je viens de tester ton code, et ça marche chez moi

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    Citation Envoyé par herch Voir le message
    un coup au hasard
    mets un au début du constructeur de ton bouton

    mais sinon je ne vois d'où peut venir le problème
    ça ne fonctionne pas super() bien...

    Ce qui me surprend, c'est que je n'arrive même pas avoir le résultat de System.out.println(icon) dans ma console ! Y a-t-il des endroits (genre constructeur) où il est impossible d'en placer ? (j'en doute fortement !)

  8. #8
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    non, je ne crois pas, je viens de tester des system.out.println dans le constructeur de ton bouton, et ça marchait

    y a-t-il des exceptions qui s'affichent??

  9. #9
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    Citation Envoyé par herch Voir le message
    non, je ne crois pas, je viens de tester des system.out.println dans le constructeur de ton bouton, et ça marchait

    y a-t-il des exceptions qui s'affichent??
    Non je n'ai aucunes erreurs. Par contre, il y a vraiment un problème avec le System.out.println() !

    Dans une partie de mon programme j'ai ce code :


    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
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package viewer;
     
    import javax.media.j3d.Appearance;
    import javax.media.j3d.PointArray;
    import javax.media.j3d.PointAttributes;
    import javax.media.j3d.Shape3D;
    import javax.vecmath.Color3f;
    import javax.vecmath.Point3f;
     
    public class DrawPoints extends Shape3D implements ViewerConstants {
     
        public void DrawPoints() {
            System.out.println("start creation points");
            double maxPoints = Math.pow(nbPoints, 3);
            System.out.println(maxPoints);
            Point3f points[] = new Point3f[(int) maxPoints];
            Color3f colors[] = new Color3f[(int) maxPoints];
     
            int i = 0;
            final double factor = 1.0 / nbPoints;
     
            for (int x = 0; x < nbPoints; x++) {
                for (int y = 0; y < nbPoints; y++) {
                    for (int z = 0; z < nbPoints; z++) {
                        points[i] = new Point3f(0.15f * (float) x, 0.15f * (float) y, 0.15f * (float) z);
                        colors[i] = new Color3f((float)(x*factor),(float)(y*factor),(float)(z*factor));
                        i++;
                    }
                }
            }
            PointArray pointArray = new PointArray((int) maxPoints,
                    PointArray.COORDINATES |
                    PointArray.COLOR_3);
     
            pointArray.setCoordinates(0, points);
            pointArray.setColors(0, colors);
            Appearance pointApp = new Appearance();
            pointApp.setPointAttributes(new PointAttributes(12.0f, true));
            this.setGeometry(pointArray);
            this.setAppearance(pointApp);
            System.out.println("End creation points");
     
        }
    }
    Ce code me fait un jolie cube plein de couleurs.. ET il y a dedans 3 System.out.println :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.out.println("start creation points");
    System.out.println(maxPoints);
    System.out.println("End creation points");
    Et voici la sortie de la console de NetBeans :
    init:
    deps-jar:
    compile-single:
    run-single:
    216.0
    216.0
    BUILD SUCCESSFUL (total time: 6 seconds)
    Problème : pourquoi les Strings ne s'affichent pas alors que les doubles, OUI

  10. #10
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    aucune idée désolé
    j'ai jamais eu ce genre de problème, donc je ne peux pas vraiment t'aider

  11. #11
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    Je me suis dit que ça venait de Netbeans alors je lance mon projet en ligne de commande :
    /usr/lib/jvm/java-6-sun-1.6.0.13/jre/bin/java -classpath /home/yoyo/Desktop/jdev/lib/j3d-1_5_2-linux-i586/lib/ext/j3dcore.jar:/home/yoyo/Desktopjdev/lib/j3d-1_5_2-linux-i586/lib/ext/j3dutils.jar:/home/yoyo/Desktop/jdev/lib/j3d-1_5_2-linux-i586/lib/ext/vecmath.jar:/home/yoyo/NetBeansProjects/Viewer_0.2/build/classes viewer.viewer
    Et en sortie, j'ai juste
    216.0
    216.0
    ET là, révélation !!! Netbeans me lance Viewver_0.2 à la place de Viewver_0.3... J'ai pourtant copier le projet 0.2 en 0.3 avec "l'utilitaire" Netbeans...

  12. #12
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    Citation Envoyé par herch Voir le message
    aucune idée désolé
    j'ai jamais eu ce genre de problème, donc je ne peux pas vraiment t'aider
    Merci beaucoup ! D'une part ce n'était pas top niveau Listener et tu m'as bien aidé. D'autre part, je travaillais comme un cochon avec Netbeans et je me suis emmêlé les pinceaux..

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

Discussions similaires

  1. JButton et ActionListener
    Par tanguy.L dans le forum Composants
    Réponses: 6
    Dernier message: 27/04/2008, 17h15
  2. Question sur des JButton et ActionListener
    Par DrTank dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 19/05/2007, 17h10
  3. Problème gestion actionListener pour JButton
    Par cedricbr dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 26/05/2006, 17h39
  4. JButton et Actionlistener
    Par Zobbiwan dans le forum Composants
    Réponses: 3
    Dernier message: 16/12/2005, 01h28
  5. [débutant][swing][JButton][ActionListener]
    Par cmoa59 dans le forum Composants
    Réponses: 6
    Dernier message: 25/05/2005, 16h19

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