Bonjour.

Alors voila j'ai un projet java fait avec netbeans qui contient deux fenêtres.
Je cherche a instancier l'une d'elle en tant que Singleton (une seule instance de classe possible).

Je fais donc :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MaClasse extends java.awt.Frame {
 
    private static MaClasse instance = null;
 
    private MaClasse() {
 
    }
 
    public static MaClasse newInstance() {
        if (instance == null) {instance = new MaClasse();}
        initComponents();
        return instance;
    }
}
Que j'instancie comme ça depuis l'autre fenêtre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
private void btNouveauActionPerformed(java.awt.event.ActionEvent evt) {   
      MaClasse window = MaClasse.newInstance();
      window.setVisible(true);
}
J'obtiens une erreur sur la ligne "initComponents();" qui est une instruction générée automatiquement par netbeans (pour mettre en forme la fenêtre) :

non-static method initComponents() cannot be referenced from a static context
Et si j'essaye d'enlever le "static", l'erreur est cette fois à l'appel sur la ligne "MaClasse window = MaClasse.newInstance();" et est :

non-static method newInstance() cannot be referenced from a static context
Si je met en commentaire l'instruction "initComponents();" je vois que le singleton marche bien puisque quand je clique plusieurs fois sur le bouton une seule fenêtre s'affiche. Mais j'ai besoin de cette instruction pour construire la fenêtre ...

Bref comment faire svp ?
Merci d'avance.