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

EDT/SwingWorker Java Discussion :

Swing et l'EDT


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Par défaut Swing et l'EDT
    Salut,

    j'ai lu le tutoriel http://gfx.developpez.com/tutoriel/j...ing-threading/
    qui est très intéressant, seulement j'aurai besoin de quelques précisions. Si j'ai bien compris, chaque accès à un composant Swing doit s'effectuer dans l'EDT. Ceci concerne-t-il seulement les composants affichés?
    Est il correct d'instancier des composants Swing dans in thread puis de les afficher avec SwingUtilities.invokeLater?
    Merci.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    EN fait je dirais plutôt d'instancier les modèles dans un thread séparé (donc grosso merdo préparer les données), et instancier les composants dans l'edt et les afficher par la suite.

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Par défaut
    J'y avait pensé mais je trouve cette méthode un peu lourd a coder. Mon problème c'est que j'exécute des requêtes plus ou moins longues sur une base de donnée et avec les résultats, j'instancie des composants swing.

    Je viens de jetter un œil sur la doc de SwingUtilities il est indiqué: This method should be used when an application thread needs to update the GUI, que signifie mettre a jour le GUI concrètement? rafraîchir les composants affichés?

  4. #4
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Citation Envoyé par zulkifli Voir le message
    Mon problème c'est que j'exécute des requêtes plus ou moins longues sur une base de donnée et avec les résultats, j'instancie des composants swing.
    Bonjour,
    et que fais-tu des composants swing instanciés, tu les ajoutes bien à un container pour les voir apparaître à l'écran ? Dans ce cas, il y a bien rafraîchissement des composants affichés, donc le code devrait être exécuté dans l'EDT.
    Concernant les modèles, ils peuvent être instanciés dans un thread séparé, mais une fois que les composants sont affichés, les modèles doivent être mis à jour dans l'EDT.

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Par défaut
    Plus précisément dans un Thread quelconque (non EDT) j'instancie un JPanel, qui n'est pas affiché, j'effectue une requête dans laquelle j'ajoute des JLabel à ce JPanel. Ma requête terminée, j'ajoute le JPanel à ma JFrame qui est déjà affichée et ceci par le biais de SwingUtilities.invokeLater donc dans l'EDT. Est-ce correct comme façon de procéder?
    Peux t-on instancier, acceder à des composants Swing non affichés hors EDT?

  6. #6
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    A mon avis, cela ne devrait pas poser de problème tant que tu manipules des composants qui ne sont pas affichables, i.e. pour lesquels la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Component.isDisplayable()
    renvoie false.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. EDT et Swing
    Par pierrox dans le forum EDT/SwingWorker
    Réponses: 5
    Dernier message: 30/08/2008, 00h39
  2. Swing, EDT, menu non bloquant
    Par visiwi dans le forum EDT/SwingWorker
    Réponses: 7
    Dernier message: 01/06/2008, 22h36
  3. ArrayOutOfBoundsException dans l'EDT de swing
    Par hugo123 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 27/11/2007, 22h28
  4. swing et edt
    Par Sp4ce dans le forum EDT/SwingWorker
    Réponses: 8
    Dernier message: 16/10/2007, 12h06
  5. Swing, EDT, et rafraichissement
    Par Flophx dans le forum EDT/SwingWorker
    Réponses: 11
    Dernier message: 19/04/2007, 20h09

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