AddActionListener qui ne marche pas

Résolu
langagec08 Messages postés 72 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 22 août 2011 - 31 mars 2011 à 13:21
langagec08 Messages postés 72 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 22 août 2011 - 31 mars 2011 à 16:16
Bonjour tout le monde voila mon problème : j'ai déclarer un classe button extends Jbutton et je veux utiliser cette classe dans une autre classe A,mais lorsque je met le AddActionListener pour que mon bouton écoute un formulaire ça ne fonctionne pas, voila mon code bien comprendre le probléme :
// voila ma classe Button
public class Button extends JButton {

JButton bouton=new JButton() ;
public Button(){	
super() ;
}
public Button(String lab){
bouton.setText(lab);
}

public JPanel definirbouton(){
JPanel pan=new JPanel();
bouton.setPreferredSize(new Dimension(100,30));
pan.add(bouton);
return pan;
}

}

La CLasse A ou j'appelle mon Jbutton
public class Aj {
 /*il ya plusieurs autre déclaration de formulaire ...mais je veux pas vous surchager par le code*/
Button valider=new Button("valider") ; 

JPanel formulaire=new JPanel();
public Aj(){
 // jai déja une classe Fenetre ou je defini ma fenetre
     Fenetre fenetre=new Fenetre();
     formulaire.add(valider.definirbouton());
valider.addActionListener(new BoutonListener());
fenetre.setContentPane(formulaire);

       }

class BoutonListener implements ActionListener{
public void actionPerformed(ActionEvent e){

System.out.println("okkkk");
 // mais pourtant rien ne s'affiche sur la console
}


}
}

aidez moi SVP
A voir également:

2 réponses

cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
31 mars 2011 à 14:05
Salut,

Normal que ça ne marche pas. Histoire que tu comprennes pourquoi :

- ta classe Button hérite de JButton => une instance de Button est donc également une instance de JButton. C'est comme si je disais : une voiture est un véhicule.

- à chaque appel de new Jbutton() tu crées une nouvelle instance de JButton, c'est-à-dire, un nouveau bouton. De plus, à chaque appel de new Button() tu crées également un nouveau bouton puisqu'un Button est un JButton.

Dans ton code, tu penses instancier 1 bouton "valider" mais en fait, tu en instancies 2. Le bouton "valider" a bien reçu l'écouteur, mais comme il n'est pas affiché, il ne risque pas de se déclencher.

Avec cette version de ta classe Button, ça marchera sûrement mieux :

public class Button extends JButton {

public Button(String lab){

super(lab);
setPreferredSize(new Dimension(100,30));

}

public JPanel definirbouton() {

JPanel pan = new JPanel();
pan.add(this);
return pan;

}

}


Cela dit, je ne vois pas l'intérêt de la méthode definirbouton(), si tu l'appelles 2x ça risque de ne pas marcher (un bouton présent dans 2 containers risque de ne pas se rafraîchir correctement).

Bonne continuation,
Jonathan Guéhenneux
3
langagec08 Messages postés 72 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 22 août 2011 1
31 mars 2011 à 16:16
Merciiii Jonathan Guénneux tu m'as vraiment sauvé la vie...ça marche trés bien maitenant
0
Rejoignez-nous