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

Interfaces Graphiques en Java Discussion :

Attendre un retour fonction


Sujet :

Interfaces Graphiques en Java

  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
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    ImporDialog dérive d'un JDialog ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    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

  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 184
    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 184
    Points : 1 745
    Points
    1 745
    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
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    setModal() pour bloquer ou non sur le dialogue et rien d'autres.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    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()

  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
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    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".

Discussions similaires

  1. 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