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

SWT/JFace Java Discussion :

Probleme d'affichage IHM


Sujet :

SWT/JFace Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Probleme d'affichage IHM
    Bonjour, je viens a vous pour essayer de trouver une solution ensemble ...
    * Langage de développement JAVA et IHM en SWT.

    Résumé de mon application :
    En fait j'utilise une socket TCP pour faire communiquer 1 client et un serveur.
    Du coté du serveur, j'ai en plus 2 files de message FIFO (ArrayBlockingQueue).

    --> La première est utilisée par la Socket pour ÉCRIRE des données qui sont ensuite LUES et affichées par l'IHM.

    --> L'autre file de message est utilisée par l'IHM pour ÉCRIRE des données qui seront ensuite envoyées au client via la socket TCP.

    Le problème c'est que l'affichage des infos sur l'ihm se fait que quand le curseur passe sur l'IHM ou quand on clique sur l'IHM. c'est a cet instant seulement que le résultat s'affiche dans la zone de texte...

    Donc j'aimerai savoir comment faire pour que l'IHM affiche les résultats directement(sans qu'on ait besoin de passer ou de cliquer sur cette dernière)?

    J'ai essayé de rafraichir le display avec la méthode update() mais rien...

    Je vous remercie...

    Cordialement ZuluLa....

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    repaint() ?
    Tu ne donnes pas assez d'infos sur ce que tu fais exactement. Montre le code concerné (4 lignes, pas 40).

  3. #3
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    bjr et bonne année les zouzous !

    Oui je pense aussi que c'est un pti qu'il faut ajouté repaint();
    ou sinon je pense aussi un setText() si c'est des labels ou des fireXXUpdates ou des .... donc la réponse malheuresement ne sera pas presice tant que tu nous dises pas qu'est ce que tu t'ulises exactement.
    Je prefere la langue java que le Francais

    bon courage.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Juste pour vous signaler les gars, il s'agit d'un problème SWT et non Swing...

  5. #5
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par sinok Voir le message
    Juste pour vous signaler les gars, il s'agit d'un problème SWT et non Swing...
    C'est pour ça que j'ai été timide pour le repaint avec '?' Ne connaissant pas SWT. Mais sans code c'est difficile de savoir si c'est un problème vraiment SWT ou simplement une petite erreur humaine.

  6. #6
    Membre régulier Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Points : 82
    Points
    82
    Par défaut
    DESOLE !
    J'ai lu en diagonale effectivement en SWT ça change tout.
    moi et SWT ça fait deux !
    bon courage

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 145
    Points : 179
    Points
    179
    Par défaut
    Essai un layout() sur le composite parent.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut + d'info probleme affichage IHM
    Voici mon main...j'ai remarqué que s'était la méthode display.sleep() du display qui se bloquait jusqu'à ce qui il y ait un nouvel évenement sur l'ihm...
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    // main :
     
    public static void main(String[] args) {
            // declaration    
            String msgForEventWindows = "";    
            // lancement du serveurTCP
        Connecteur cnxTCP = new Connecteur();
            // instanciation ihm
        Gui ihm = new Gui(cnxTCP);
        ihm.compMere.pack();
            ihm.myShell.pack();
            ihm.myShell.open();
     
        // instanciation d'1 Hashmap 
        hashForEventWindows  = new HashMap<String, String>();
     
            while (!ihm.myShell.isDisposed()) {
                 if (!ihm.display.readAndDispatch()) {
                     ihm.display.sleep();
                 } 
     
      if (Connecteur.isReady){
                  // lecture d'1 HashMap dans la file de message.
              hashForEventWindows = Connecteur.ReadMqIn(Connecteur.mqIn);
                  // lecture de la HashMap    et on stocke son contenu ds 1 String
              msgForEventWindows = dumpMap("", hashForEventWindows);
     
           // si la string n'est pas vide         
        if (msgForEventWindows!= null && msgForEventWindows.length() != 0) {             // affichage de la String dans 1 TextArea de l'IHM 
              ihm.afficheEvents(msgForEventWindows);
     
                 // détection de la suite de caracteres "[err]" dans la String 
                 int compteur = 0;
                 int error = msgForEventWindows.indexOf("[err]");
                 // si caracteres present alors on affiche un label en rouge          
                 // + le nombre d'erreur retrouvées
                 if (error != -1){
                compteur ++;
                ihm.afficherCouleurKO(ihm.resTest);
                ihm.textError.setText(Integer.toString(compteur));
                }
                else {
                            // sinon on affiche label en vert signifiant que tout est OK. 
                    ihm.afficherCouleurOK(ihm.resTest);
                                    ihm.textError.setText(Integer.toString(compteur));
                    } 
                  msgForEventWindows = ""; 
                  Connecteur.isReady = false;
            }
        } 
         } 
            ihm.display.dispose();
       }
    }
    donc voila mon main ...
    Je me répète en disant que l'affichage des résultats rouge ou vert et du nombre d'erreurs est fait que quand la souris est sur l'ihm...
    thank you very much ...

  9. #9
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Points : 72 948
    Points
    72 948
    Par défaut
    Salut,

    Je pense que tu devrais un peu threader tout ça. Tu utilises uniquement le ThreadUI pour faire tout tes traitements.

    En fait tout ce qui se trouve dans la boucle while sauf le readanddispatch et le sleep doit être placé dans un thread, c'est-à-dire à partir de if (connecteur.isReady). En fait tout ce qui touche au serveur...

    Mickael

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut reponse
    Bonjour tout le monde j'ai trouvé une solution en fait, je disais que le Sleep était en attente d'un évenement pour se réveiller... en fait j'ai utilisé la méthode timerExec(time, Runnable);

    qui fait un contrôle toutes les 200 millesecondes pour savoir s'il y a quelque chose de nouveau a afficher cela fonctionne ...
    mais je vais tout de même essayé ta solution KeulKeul qui me parrait pas trop mal... c'est l'occasion de se familiariser avec les threads....


    en tout merci a tout le monde ...

  11. #11
    Membre habitué
    Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 177
    Points : 145
    Points
    145
    Par défaut
    je pense que le mieux serait de separer la communication TCP/IP en thread, ce serait plus propre et bien sur plus facile a debuguer ( 1 ou 2 "g" ?? )

Discussions similaires

  1. problem d'affichage dans IHM
    Par jean1979 dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 04/12/2011, 17h27
  2. [SWT][IHM]Probleme d'affichage des icones
    Par barbu0055 dans le forum SWT/JFace
    Réponses: 6
    Dernier message: 03/03/2006, 12h05
  3. probleme d'affichage IHM 'Parametre incorrect'
    Par GENERYS dans le forum C++Builder
    Réponses: 5
    Dernier message: 26/11/2004, 16h53
  4. [langage] Problème d'affichage
    Par marcoss dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2003, 13h05
  5. IE [Applet] Plug-in problème d'affichage
    Par Tonton Luc dans le forum JBuilder
    Réponses: 4
    Dernier message: 19/06/2003, 08h28

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