(Débutant) Action non déclenchée par un bouton

ptiniko Messages postés 26 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 8 juillet 2009 - 9 sept. 2008 à 20:58
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 - 9 sept. 2008 à 23:40
Bonjour à tous,

Je sollicite votre aide car j'ai un petit souci. J'ai cherché en vain sur les anciens posts une réponse à ma question (surement du au fait que je ne sais pas trop comment il aurait pu etre formulé, et avec quels mots clés.)

Donc en fait, c'est tout bête, je suis débutant niveau Java (j'avoue que je me prends une grosse claque niveau complexité du language), et je voudrais deja tester le fait que quand je clique sur mon bouton il me lance l'invite de commande et écrit "ok".

Je vous laisse le code:




__

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;




public abstract class MesClasses extends JFrame implements ActionListener




 
  public static void create_window()
  {



   
   JFrame        f=new JFrame("Agenda 2009"); //fenêtre
   f.setExtendedState(JFrame.MAXIMIZED_BOTH);



   f.setSize(800, 600); // Taille de la fenêtre
   
   
   JPanel pan=new JPanel();              //panel
         BoxLayout    bl=new BoxLayout(pan,BoxLayout.Y_AXIS);   //layoutManager
         pan.setLayout(bl);                      //attache le layoutManager au panel   
         pan.setBackground(Color.decode("#FFFFFF"));
        
        
   JLabel lab=new         JLabel("Menu");//Créé un label (texte)
   pan.add(lab);//attache le texte au panel
        
        
         //un 2eme panel qui va etre imbriqué dans le 1er panel !
         JPanel  pan2=new   JPanel();   //2eme panel
         bl=new BoxLayout(pan2,BoxLayout.X_AXIS);  //un autre alignement
         pan2.setLayout(bl);
        
        
         lab=new JLabel("Selectionner le mois:");
         pan2.add(lab);  //ajout dans le 2eme panel
         String  c[] ={"Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"};   //contenu de la comboBox
         JComboBox   cb=new JComboBox(c);
         cb.setMaximumSize(cb.getPreferredSize());
         pan2.add(cb);
         pan2.setBackground(Color.decode("#6495ED"));
        
        
       //ajoute le panel 2 dans le panel 1!
         pan.add(pan2);
        
        
       //un dernier composantpour la route...
         JButton but=new  JButton("OK");
         but.addActionListener(cb);
         pan.add(but);
        
            
        
       
          f.setContentPane(pan);//Défini le panel 'pan' pour la fenetre
          f.setVisible(true);//La rend visible
          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Ferme le thread
          
}



  public void actionPerfomed(ActionEvent e)
  {
   System.out.println("ok");
  }



  
  public static void main(String args[])
  {
   create_window();
  }
 
}

Et malheureusement quand je clique sur OK, rien ne se passe. C'est surement une grossière erreur, mais je suis incapable de savoir où elle se trouve.

Merci beaucoup de votre aide.

Niko.










 

1 réponse

cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
9 sept. 2008 à 23:40
Salut et bienvenue parmi nous

voici ton code après correction, et quelques améliorations en plus; voici ce que je ferai à ta place :

import javax.swing.*;



import



java.awt.*;




import



java.awt.event.*;

public class Fenetre extends JFrame implements ActionListener {
   
    /* Attributs privés */
    private JButton but        = new



JButton



("OK");
   



private




JComboBox cb    =



new




JComboBox



(



new




String[] {"Janvier", "Février", "Mars", "Avril",
                                                    "Mai", "Juin", "Juillet", "Août", "Septembre",
                                                    "Octobre", "Novembre", "Décembre"});
   



private




JLabel lab1        =



new




JLabel



("Menu");
   



private




JLabel



lab2        =



new




JLabel



("Sélectionner le mois");

    /* Constructeur */
    public Fenetre() {
        super("Agenda 2009"); // ou this.setTitle("Agenda 2009");
       
        construireInterface();
       
        this.setExtendedState(



this



.MAXIMIZED_BOTH);
       



this



.setSize(800, 600);
       



this



.setDefaultCloseOperation(



this



.EXIT_ON_CLOSE);
       



this



.setVisible(true);
    }
   
    /* Une méthode privée pour structurer un peu le code */
   



private




void construireInterface() {
        cb.setMaximumSize(cb.getPreferredSize());

        JPanel pan =



new



JPanel();
        BoxLayout    bl=



new



BoxLayout(pan,BoxLayout.Y_AXIS);
        pan.setLayout(bl);
        pan.setBackground(Color.decode("#FFFFFF"));

        pan.add(lab1);

        JPanel pan2=



new



JPanel();
        bl=



new



BoxLayout(pan2,BoxLayout.X_AXIS);
        pan2.setLayout(bl);

        pan2.add(lab2);
       
        pan2.add(cb);
        pan2.setBackground(Color.decode("#6495ED"));
       
        pan.add(pan2);
       
        but.addActionListener(this);
        pan.add(but);
       
       



this



.setContentPane(pan);
    }

   



public




void



actionPerformed(ActionEvent e) {
        // Vérification avant de faire l'action
        // Pour être sûr que c'est but qui a déclenché l'événement
        if (e.getSource() == but) {
            System.out.println("ok");
        }
    }
   
   
   



public



static



void



main(



String



args[]) {
       



new



Fenetre();

    }
 
}



Bonne continuation !


_____________________
Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
0
Rejoignez-nous