IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

[JFileChooser] plantage aléatoire dans un Thread séparé


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Points : 131
    Points
    131
    Par défaut [JFileChooser] plantage aléatoire dans un Thread séparé
    Bonjour,

    J'ai une question par rapport au JFileChooser et notamment l'utilisation de ce composant dans un nouveau Thread.

    Jusqu'à présent il m'arrivait de la mettre donc dans un Thread séparé (pour faire un traitement en parallèle de mon appli) mais j'ai remarqué que cela me causait des plantages aléatoires.

    Par exemple les deux premières fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JFileChooser.showSaveDialog(Component parent)
    Fonctionne parfaitement, et la troisième fois, le système plante complétement sans Exception, et seul un ctrl+alt+sup peut permettre de fermer l'appli.

    Cela peut intervenir au bout de 3,4,5... fois.

    J'ai du mal avec les gestion de l'edt et les Thread (malgré tous les tutorial que j'ai pu lire sur le net) et je me demande si je fais bien les choses avec ces Threads la !

    Quelqu'un peut-il éclairer ma lanterne sur ces plantages et me dire si ce n'est pas la bonne méthode de procéder ainsi (un composant Swing dans un autre Thread).

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Les composants Swing sont prévus pour être utilisés dans un unique Thread: L'Event Dispatch Thread (aka EDT). Il ne doivent être créés/appelés/modifiés que depuis ce thread, et depuis aucun autre.

    Donc si tu utilises un JFileChooser dans un Thread séparé, c'est pas bon.

    Le seul moyen est de lancer le JFileChooser dans l'EDT. Puis lancer un Thread utilisant le retour du JFileChooser.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Points : 131
    Points
    131
    Par défaut
    Effectivement,

    Je pensais cependant que la fonction showSaveDialog() s'assurait d'être dans l'EDT... à tort à priori...

    Donc soit je lance mon JFileChoser avant mon Thread, soit j'utilise un SwingUtilities.invokeAndWait() afin de le lancer quand même dans mon Thread.

    Bon bah il me reste plus qu'a reprendre tout ca...

    Merci pour tes éclaircissements

    EDITION : un conseil en ce qui concerne l'utilisation de variable contenus dans le Thread et la récupération de variable depuis le JFileChooser ? Je vois pas trop comment faire puisque je ne peux pas les déclarer en final

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah tu peux par exemple créer une classe implémentant Runnable et qui prend en paramètre les données qui t'intéressent dans son constructeur

Discussions similaires

  1. Comment lancer Word dans un thread séparé
    Par Tony49 dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/03/2009, 12h43
  2. L'évènement semble être déclenché dans un thread séparé
    Par Skalp dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 04/07/2008, 14h17
  3. Plantage dans un thread fils
    Par stehga dans le forum POSIX
    Réponses: 10
    Dernier message: 15/05/2008, 18h12
  4. Plantage dans un thread fils
    Par stehga dans le forum Windows
    Réponses: 2
    Dernier message: 14/05/2008, 20h51
  5. Réponses: 15
    Dernier message: 07/07/2005, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo