Obtenir la classe qui lance un thread, à partir du thread [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
30 juillet 2009
-
cs_AlexN
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
-
Bonjour a tous,

Voilà je vous expose mon probleme, j'ai un JDialog que j'ai modifié pour en faire un écran de connexion, l'utilisateur doit rentrer ses données , cliquer sur le bouton connecter, puis cette boite de dialogue disparait et laisse apparaitre un autre dialogue qui me sert d'écran de chargement: j'y fait apparaitre differents textes selon l'avancement. Pour cela j'ai créer un Thread dans mon 1er jDialog qui initialise tout dans mon programme et envoi le texte a mon écran de chargement. Mais lorsqu'une erreur survient, je veux faire apparaitre un JOptionPane d'erreur, mais a sa création je ne peut pas mettre "this" pour le composant auquel il est rataché, puisque "this" se refere au Thread.Ma question est donc:

Comment, de l'intérieur d'un thread, peut-on faire référence a la classe qui contient le thread?

Voilà, j'espère avoir été claire, et je vous remercie d'avance pour vos réponses.

-Le java, c'était plus facile en cours....-

4 réponses

Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
7
Salut,

je pense que tu as fais un truc du style

Thread t = new Thread() {
    ...
};

t.start();

Je connais pas trop les threads. Par contre, pour faire référence à la classe qui inclu ce code, tu peux faire ça :

NomDeTaClasse.this.methodeQueTuVeux();

En clair pour le JOptionPane :

JOptionPane.showMessageDialog(NomDeTaClasse.this, ............);

A confirme tout de même...

<hr size="2" width="100%" />Timmy!!!
Messages postés
18
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
30 juillet 2009

Merci, pour moi dans l'ordre ou c'est écrit c'est pas logique mais ça marche comme prévu, chapeau!

-Le java, c'était plus facile en cours....-
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
7
Si tu veux JOptionPane est une classe à part. Tu l'appeles et tu lui dis "Tiens la fenetre de message vas etre fille à ma classe principale NomDeMaClasse". Ensuite, tu dis que tu veux l'instance actuelle de ta classe, c'est pour ça que tu préfixes par .this

... je crois...

<hr size="2" width="100%" />Timmy!!!
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
10
Si this désigne l'instance en cours d'execution, alors dans un environnement multithread MaClasse.this désigne aussi l'instance en cours d'execution.
C'est-à-dire que si plusieurs instances de MaClasse sont en cours d'execution, MaClasse.this désignera uniquement celle en cours d'execution et pas forcement le parent du thread appelant.
Si cette astuce marche, je pense qu'elle fonctionnne uniquement en environnement monothread.
A confirmer...