Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de mise à jour du contenu d'un TextArea

    15 janvier 2011 à 1:09:47

    Bonsoir,

    j'ai un projet en cours pour la réalisation d'une application de communication like MSN basé sur les sockets TCP.
    Je souhaite faire afficher le message reçue par le serveur socket dans un TextArea.

    La méthode de réception me semble correct, d'ailleurs si je vérifie l'ajout et le contenue du mon TextArea dans la console, ce dernier est correct. Cependant, et c'est la qu'est mon problème, le coté graphique de l'objet n'évolue pas, le texte à l'intérieur ne change pas et reste celui avec lequel l'objet a été construit ("Message de base de la TextArea TextIn").

    * La classe gérant la réception et l'envoi du message reçu :
    > public class Reception extends UI implements Runnable {
    >             [...]   
    >     public void run() {
    >         
    >         while(true){
    >             try {               
    >             message = in.readLine();
    >             System.out.println("[S] @" + login +" : "+message);
    >             TextIn.append("@" + login +" : "+message); // Object TextArea membre de la classe UI
    >             System.out.println("Contenue de TI :" + TextIn.getText());
    >               [...]
    > }
    


    * Constructeur TextIn dans UI.java :

    > public class UI extends JFrame implements ActionListener {
    > [...]
    >     public TextArea TextIn;
    >     [...]
    >
    >     public UI() {
    >         [...]
    >         TextIn = new TextArea("Message de base de la TextArea TextIn", 10, 50);
    >         TextIn.setBackground(Color.white);
    >         TextIn.setEditable(false);
    >         add(TextIn, BorderLayout.NORTH);
    >         [...]
    >     }
    >
    >     public static void main(String[] args) {
    >         ui = new UI();
    >         ui.setTitle("TSElive");
    >         ui.setSize(600, 600);
    >         ui.setVisible(true);            
    >     }
    > [...]
    



    * Retour console durant les tests :
    > [S] @Yann : Salut !
    > Contenue de TI :Message de base de la TextArea TextIn@Yann : Salut !
    > [S] @Yann : Bizarre le contenu n'a pas changer..
    > Contenue de TI :Message de base de la TextArea TextIn@Yann : Salut !Bizarre le contenu n'a pas changer..


    Donc le contenu réel évolue bien .. pas celui à l'affichage.. Avez vous une idée de pourquoi ?

    Merci d'avance,
    • Partager sur Facebook
    • Partager sur Twitter
      15 janvier 2011 à 2:58:10

      je pense que c'est un problème de Thread tu dois créer un thread dédié à l'interface homme machine car les socket sont asynchrone ce sont elles qui provoquent le blocage de l'interface graphique .
      à toi de jouer maintenant ;)
      • Partager sur Facebook
      • Partager sur Twitter
        15 janvier 2011 à 8:55:57

        Ok, un thread pour gérer l'IHM.
        J'ai déjà un thread pour gérer l'émission & la réception.
        Il en faut un autre? pour gérer quoi, a quel niveau ?

        Merci bien
        • Partager sur Facebook
        • Partager sur Twitter
          15 janvier 2011 à 16:53:38

          l'essentiel c'est de séparer entre (l'émission & la réception) et la gestion de l'IHM ,chacun doit s’exécuter dans un thread "le main est thread".je peux pas savoir à quel niveau mai tu trouveras des exemples sur google .
          • Partager sur Facebook
          • Partager sur Twitter

          Probleme de mise à jour du contenu d'un TextArea

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown