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 :

Modification d'un objet GUI par un thread


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Points : 48
    Points
    48
    Par défaut Modification d'un objet GUI par un thread
    Bonjour,

    Je realise une GUI avec Java (et Eclipse Visual Editor).

    Cette GUI lance, lors d'un action, un thread classique.

    Je souhaiterai que ce thread puisse modifier un objet de la GUI, par exemple un JTextField, pour par exemple afficher l'avancement du thread dans la GUI.

    La partie lancement de thread et GUI est ok, mais je n'arrive pas a faire communiquer mon thread avec la GUI.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // GUI
    class extends JFrame
    {
    ...
    JButton button;
    JTextField textField;
    ...
    JTextField getTextField()
    {...}
    ...
    JButton getButton()
    {
       ...
       public actionListener()
       {
       thread_software = new Thread()
       {
          public void run()
          {
              new Runner(parameter);
          }
       };
      thread_software.start();
     
    }
    Le probleme est que Runner (qui est un classe classique qui fait un traitement long mais classique) ne connait aucun objet de la GUI.

    Comment faire pour Runner interagisse avec le textfield, avec comme contrainte:
    - ne pas passer le textfield en parametre du Runner
    - ne pas mettre le text field ou la JFrame static ou final

    Il semble que ca soit la un probleme de Conception Objet et non pas un probleme purement Java, autrement dit il a relation d'Agregation entre la GUI et le Thread...

    Merci,

    Dazdh

  2. #2
    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
    rendre ton textfield public ou créer un getter public qui retourne le textfield, et passer ton instance de ta classe au runner lorsque tu le crée.

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class GUI extends JFrame
    {
    ...
    JButton button;
    JTextField textField;
    ...
    public JTextField getTextField()
    {...}
    ...
     
       thread_software = new Thread()
       {
          public void run()
          {
              //démarrer Runner avec l'instance courrante de GUI
              new Runner(parameter, GUI.this);
          }
       };
    }
    Note: le runner étant un thread séparé, il faudra non seulement qu'il aie accès à ta gui (ce que tu cherche à faire) mais aussi qu'il fasse faire les modification par le thred awt (via l'utilisation de SwingWorker par exemple)

  3. #3
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Points : 48
    Points
    48
    Par défaut
    Merci, ca marche parfaitement.

    Dazdh

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/08/2014, 17h35
  2. Cacher la modification apportée par un thread
    Par twity dans le forum Général Java
    Réponses: 5
    Dernier message: 29/04/2013, 22h14
  3. Réponses: 9
    Dernier message: 09/10/2010, 02h51
  4. Fichier ecrit par un Thread et lu par un autre Thread
    Par Fladnag dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 27/04/2004, 14h56

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