Bonjour à tous !

Je développe une SingleFrameApplication avec Netbeans.
A tout moment l'utilisateur peut faire apparaitre une boîte de dialogue dans laquelle il entre un chaîne de caractères. Il valide ensuite son entrée ce qui a pour effet de masquer la boîte de dialogue.
Une méthode appelée getChaine() est présente dans la classe Box (représentant la boîte de dialogue) afin de récupérer la chaîne entrée par l'utilisateur depuis la méthode de la classe principale qui affiche la boîte de dialogue.

Voici la méthode appelée pour afficher le JDialog :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
@Action
public void showBox() {
    if (box == null) {
        JFrame mainFrame = App.getApplication().getMainFrame();
        boite = new Box(mainFrame);
        boite.setLocationRelativeTo(mainFrame);
    }
    App.getApplication().show(boite);
    boite.getChaine();
}
Et voici un résumé de la classe Box :
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
public class Box extends JDialog {
 
    public Box(Frame parent) {
        super(parent);
        initComponents();
    }
 
    public String getChaine() {
        return chaine;
    }
 
    @Action
    public void valider() {
        setVisible(false);
    }
}
La méthode valider de la classe Box permet de masquer la boîte de dialogue (modale) ce qui a pour effet la poursuite de l'exécution du programme au sein de la méthode appelante (showBox()) et donc de l'exécution de la ligne boite.getChaine();.

Malheureusement, le code ainsi écrit n'est pas compilable, car la ligne boite.getChaine(); renvoit une erreur :
cannot find symbol
symbol: method getChaine()
location: class javax.swing.JDialog


Si j'interprète bien cette erreur, boite est considéré comme une instance de la classe JDialog mais pas de la classe Box, alors que j'ai pourtant bien écrit public Box extends JDialog...

Je ne vois vraiment pas d'où vient le problème ! Le seul moyen que j'ai trouvé pour le contourner est de rendre public et static la variable chaine, mais je doute que ce soit une bonne solution dans mon cas...

A l'aide !

Merci d'avance !

Axel