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 :

problème avec des boutons


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut problème avec des boutons
    Bonjour tout le monde
    j'ai un petit problème avec la gestion d'évenement sur des boutons.
    J'ai crée un bouton comme tel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //creation du bouton jouer
    Button jouer = new Button("Jouer");
    jouer.setSize(50,25);
    jouer.setLocation(190,75);
    add(jouer);   // ajout "graphique" du composant
    jouer.addActionListener(this);    
    // ajout "événementiel" du composant
    jouer.setVisible(true);

    et je fais un test pour savoir ce su'il se passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void actionPerformed(ActionEvent evt) {
        Object source = evt.getSource(); 
        System.out.println(source);
        System.out.println(jouer);
        if (source == jouer) {nb_Coups.setNbCoups(); 
        System.out.println(txt.getText());
        } else System.out.println("a"+txt.getText());
    }
    Il me renvoit ceci quand j'appuie sur le bouton jouer.
    Apparemment le bouton n'as pas été crée mais je vois pas le problème. J'espere que vous pourrez m'aider

    java.awt.Button[button0,190,75,50x25,invalid,label=Jouer]
    null
    a9

  2. #2
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Ton bouton a bien été créé mais le problème c'est que sa portée est limitée au corps de ton constructeur ou de ta méthode. Modifie de cette manière:

    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
    public class Test
    {
        private JButton jouer;
     
        public Test()
        {
             jouer = new JButton("jouer");
             //ton code...
        }
     
        public void actionPerformed(ActionEvent evt) {
            Object source = evt.getSource();
            System.out.println(source);
            System.out.println(jouer);
            if (source == jouer) {
                nb_Coups.setNbCoups();
                System.out.println(txt.getText());
            } else 
                System.out.println("a"+txt.getText());
        }
    }

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut
    c'est ce que j'ai fait,
    Je met mon code en entier, vous verrez plus ce que j'ai fait

    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
     public class JeuDes extends Frame implements ActionListener{
         private Button jouer;
         public JeuDes(final String nom,final int i, final int j) {
     
        // titre de la fenêtre
        ...                
        //creation du la listbox
                 ...                   
                //creation du bouton jouer
        Button jouer = new Button("Jouer");
                 jouer.setSize(50,25);
                 jouer.setLocation(190,75);
                 add(jouer);   // ajout "graphique" du composant
                 jouer.addActionListener(this);    // ajout "événementiel" du composant
                 jouer.setVisible(true);
     
                 public void actionPerformed(ActionEvent evt) {
            Object source = evt.getSource(); 
            //System.out.println(source);
            //System.out.println(jouer);
            if (evt.getActionCommand().equals("Jouer")) {
                nb_Coups.setNbCoups(txt.getText()); 
                //System.out.println(txt.getText()); 
            } 
        }
    }

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    Le problème est que tu redéfini ton bouton dans ton constructeur. Il ne faut pas écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button jouer = new Button("Jouer");
    mais bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jouer = new Button("Jouer");
    comme dans le code qu'on t'a posté juste au dessus

    Edit : essayes d'utiliser les balises CODE pour ton code (l'icône #)

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut
    désolé pour la présentation, je vais faire un effort
    maintenant j'ai des messages d'erreurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at initial.JeuDes.actionPerformed(JeuDes.java:65)
    	at java.awt.Button.processActionEvent(Unknown Source)
    	at java.awt.Button.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    ligne 65 : nb_Coups.setNbCoups(txt.getText());

    ma classe ChampsnbCoups utilise cette méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void setNbCoups(String nb) {
    		try {
    			int nb1=Integer.parseInt(this.getText());
    			this.nbCoups=nb1;
    		}catch (Exception ex) {
    			this.setText("");
    		}
    	}

  6. #6
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    C'est le même problème que pour ton bouton mais cette fois-ci pour nb_coups et/ou txt..

    Vérifie l'initialisation et la portée de ces variables.

  7. #7
    Membre confirmé Avatar de kerinel
    Profil pro
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Par défaut
    Bonjour,
    une petite nuance, c'est ce que tu penses faire mais probablement pas
    lorsque tu écris
    Button jouer = new Button("Jouer");

    cette partie est probablement dans le constructeur de ta classe. Or en écrivant Button devant jouer, tu indiques que tu crées une variable dont la portée est limitée à l'intérieur du constructeur. Pour créer une variable dont la portée est étendue à toute la classe,l e code correct est :
    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
     
    public class maClasse extends ActionListener{
     
    private Button jouer; //déclaration en dehors du constructeur
     
    public maClasse(){ //le constructeur
    ...
    jouer = new Button("Jouer"); //instanciation dans le constructeur
    //et non pas Button jouer= new Button("Jouer"); qui masque le bouton jouer pour le constructeur
     
    jouer.addActionListener(this);
    ...
    } 
     
    public void actionPerformed(ActionEvent evt) {
    Object source = evt.getSource();
    //System.out.println(source);
    //System.out.println(jouer);
    if (evt.getActionCommand().equals("Jouer")) {
    nb_Coups.setNbCoups(txt.getText());
    //System.out.println(txt.getText());
    } 
     
    }
    Bon code,
    kerinel

Discussions similaires

  1. Problème avec des boutons controle ActiveX
    Par dadu35 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2015, 12h20
  2. [XL-2010] Problème avec des boutons controle ActiveX
    Par dadu35 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/01/2015, 09h20
  3. Problème avec des Boutons personnalisés
    Par Turvy dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 18/04/2014, 11h23
  4. Problème avec des Boutons Radio
    Par Spinoza23 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 01/02/2007, 13h59
  5. problème de avec des boutons
    Par babap1 dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 04/01/2007, 09h13

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