1. #1
    Membre à l'essai
    Inscrit en
    mai 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 33
    Points : 10
    Points
    10

    Par défaut Attendre un retour fonction

    Bonjour,

    J'ai un petit pépin.

    J'ai une Classe qui s'occupe d'afficher une fenêtre d'import de JTable.
    Dans cette classe j'ai une Méthode Display() qui affiche la fenêtre d'import.
    Je voudrais attendre que cette méthode renvoie un IMPOR_DONE pour récupérer la JTable.
    Je ne sait pas si je me fais comprendre. C'est un peu à la manière dont fonctionne JFileChooser.
    Pour donner un exemple de ce que je voudrais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ImporDialog imp = new ImporDialog(file);
    if ( imp.display() == IMPOR_DONE )
    {
             JTable table = imp.getTable();
    }
    En fait je ne sais pas comment mettre cela en oeuvre. Si il me faut des Listeners et des observateurs.
    Si quelqu'un pouvais m'aider ç serait cool, ça fait deux bonne heure que je cherche .

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    août 2006
    Messages
    3 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 3 220
    Points : 6 337
    Points
    6 337

    Par défaut

    ImporDialog dérive d'un JDialog ?

  3. #3
    Membre à l'essai
    Inscrit en
    mai 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 33
    Points : 10
    Points
    10

    Par défaut

    Citation Envoyé par wax78 Voir le message
    ImporDialog dérive d'un JDialog ?
    Oui. Elle dérive d'un JDialog.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    24 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 24 619
    Points : 46 984
    Points
    46 984

    Par défaut

    Si ta boite de dialogue est modale, la méthode show() sera blocante jusqu'à ce que la boite aie été à nouveau cachée. A toi d'enrober autour avec tes boutons / options / composants pour déterminer une valeur de retour
    On recherche de nouveaux collègues Java / Java EE seniors sur louvain
    faq java, cours java, javadoc. Pensez à et

  5. #5
    Membre à l'essai
    Inscrit en
    mai 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 33
    Points : 10
    Points
    10

    Par défaut

    Ok merci pour ta réponse.

    Y'a pas moyen de faire un truc avec le pattern observer?
    Ce serait plus propre. En tout cas je vais essayer avec la méthode show.

    Edit : La méthode show est dépréciée. Y'aurait pas une autre fonction? Pas dépréciée?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2004
    Messages
    1 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : avril 2004
    Messages : 1 182
    Points : 1 741
    Points
    1 741

    Par défaut

    Bonjour,

    setVisible(true) ?

    tout est dans la doc :
    Deprecated. As of JDK version 1.5, replaced by setVisible(boolean).

  7. #7
    Membre à l'essai
    Inscrit en
    mai 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 33
    Points : 10
    Points
    10

    Par défaut

    Citation Envoyé par Mathieu.J Voir le message
    Bonjour,

    setVisible(true) ?

    tout est dans la doc :
    J'ai vu qu'il y avait setVisible et show. Je suis aller voir la javadoc direct. Mais le setVisible, il me sert à rien, je l'ai déja mis. Du cou ce serait la méthode setVisible qui est bloquante ????

    Edit : la méthode show ne me bloque pas grand chose. Et setVisible non plus. Par contre le setModal marche plutôt bien. Une idée?

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    août 2006
    Messages
    3 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 3 220
    Points : 6 337
    Points
    6 337

    Par défaut

    setModal() pour bloquer ou non sur le dialogue et rien d'autres.

  9. #9
    Membre à l'essai
    Inscrit en
    mai 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 33
    Points : 10
    Points
    10

    Par défaut

    Quand je met un setModal dans ma JDialog, tout mon panel et mes boutons ne s'affiche plus.

  10. #10
    Membre à l'essai
    Inscrit en
    mai 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 33
    Points : 10
    Points
    10

    Par défaut

    Personne pour me répondre?
    La je n'y arrive pas.

    Je crois que je me suis mal expliquer, et, du coup, je crois comprendre pourquoi les solutions que l'on m'a données ne marche pas.

    La on je veux exécuter le bout de code se trouve dans une méthode static. Donc si je fais une fenêtre bloquante, cela ne marchera pas car, cette fenêtre n'est pas appelée par une fenêtre. Mon code continuera de s’exécuter même si ma fenêtre est bloquante. Enfin c'est ce que j'ai compris des essais que j'ai fait.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    24 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 24 619
    Points : 46 984
    Points
    46 984

    Par défaut

    La javadoc est claire: avec un JDIalog, setVisible(true) bloque tant que la fenetre n'est pas fermée, si et seulement si:

    1) la fenêtre n'était pas déjà visible
    2) la fenêtre est modale (setModal)


    Le fait que tu sois ou non dans l'EDT ne change pas grand chose. Si t'es dans l'EDT tu fais ton setVisible et tu continue le travail après. Si tu n'y est pas, tu délègue un bout de code (le setVisible) à l'EDT et tu attends qu'il aie fini via un appel à SwingUtilies.invokeAndWait()
    On recherche de nouveaux collègues Java / Java EE seniors sur louvain
    faq java, cours java, javadoc. Pensez à et

  12. #12
    Membre à l'essai
    Inscrit en
    mai 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 33
    Points : 10
    Points
    10

    Par défaut

    J'ai essayé de faire un invokeAndWait, cependant, j'ai une exception

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.Error: Cannot call invokeAndWait from the event dispatcher thread
    La je ne sais que faire...

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    24 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 24 619
    Points : 46 984
    Points
    46 984

    Par défaut

    Comme je l'ai dit, "Si t'es dans l'EDT tu fais ton setVisible et tu continue le travail après".
    On recherche de nouveaux collègues Java / Java EE seniors sur louvain
    faq java, cours java, javadoc. Pensez à et

Discussions similaires

  1. Attendre le retour d'une fonction de callback
    Par silma dans le forum AJAX
    Réponses: 2
    Dernier message: 09/04/2013, 15h19
  2. Réponses: 8
    Dernier message: 05/07/2012, 23h01
  3. [Vb6] Attendre le retour d'un form
    Par Zaal dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/10/2006, 13h46
  4. Retour fonction
    Par Mookie dans le forum C++
    Réponses: 13
    Dernier message: 12/01/2005, 11h43
  5. Retour fonction
    Par Heaven dans le forum C
    Réponses: 4
    Dernier message: 09/01/2004, 20h17

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