Bonjour à tous,

voici mon problème :

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
17
18
19
20
21
public class Engine {

    private MainWindow MWin;

    public Engine() {
        init();
    }

    private void init() {
    }

    public void start() {
        //Invoke a new MainWindow object via EDT
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                MWin = new MainWindow(this);
                MWin.setVisible(true);
            }
        });
    }
}
Dans la méthode start(), j'aimerais passé en argument au constructeur de MainWindow l'objet Engine courant.

Problème, je ne peux pas utiliser le mot-clé this, il se réfère à l'objet Runnable.

J'ai eu une idée de solution :

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
17
18
19
20
21
22
23
public class Engine {
 
    private MainWindow MWin;
    private Engine e;
 
    public Engine() {
        init();
    }
 
    private void init() {
        e = this;
    }
 
    public void start() {
        //Invoke a new MainWindow object via EDT
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                MWin = new MainWindow(e);
                MWin.setVisible(true);
            }
        });
    }
}
Mais cette solution consiste a garder dans l'objet une référence vers lui-même. Ça me semble pas logique, existe t'il un autre moyen pour passer l'objet courant Engine?

Merci d'avance!