Bonsoir,

Allons droit au but je vous explique mon problème!
J'ai deux classes : une qui gère la création et l'affichage de l'interface et une autre qui implément ActionListener dont la fonction est de gérer les différentes actions que l'utilisateur fait sur l'interface. En gros je voudrais par exemple que si l'utilisateur clique sur un bouton crée par ma classe ContructeurIHM ce soit ma classe GestionIHM qui effectue le traitement. Je pensais cela plutôt simple et en fait rien ne marche. Mon code ressemble à ça et je pense que j'ai des problèmes de conception (j'apprends sur le tas désolé pour les puristes qui vont hurler en voyant mon code!)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
class ConstructeurIHM{
        public ConstructeurIHM(GestionIHM gestionnaire){
                 JButton bouton = new JButton("bouton");
                 bouton.addActionListener(gestionnaire);
 
                 JTextField champ = new JTextField();
                 champ.addActionListener(gestionnaire);
}
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
 
class GestionIHM{
        ConstructeurIHM ihm;
        public GestionIHM(){
                ihm = new ConstructeurIHM(this);
        }
 
        public static void main(String[] args)
        {
               GestionIHM gestionnaire = new GestionIHM();
        }
 
        public void actionPerformed(ActionEvent evt){
                 if(evt.getActionCommand().equals("bouton")){
                         ihm.champ.setText("salut");
}

Voilà... Bon évidemment ce code est bidon mais reprend ma façon de construire une interface avec un listener dans une autre classe.
Bon maintenant le problème est qu'à chaque fois que je clique sur un bouton j'ai une liste d'erreur grande comme ma main. L'erreur semble se produire lors de la ligne ihm.champ.setText("salut"); et de manière générale à chaque fois que je fais référence à un élément de l'ihm dans mon gestionnaire. L'erreur commence par :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at GestionIHM.actionPerformed(GestionIHM.java:179)
Voilà je pense que je m'y prends mal au niveau de l'instanciation de mes classes et du passage des paramètres aux constructeur mais je ne sais pas trop comment faire d'autre. J'ai cherché un tutoriel mais n'en ai pas trouvé. Mon code vous parait-il farfelu? Y a-t-il une façon type de procéder?
Désolé d'être un peu long mais j'essaye d'être le plus clair possible!

Merci bien de m'avoir lu et merci d'avance pour vos réponses!