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

Composants Java Discussion :

Problème d'affichage d'un JTree utilisant le HTML


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Par défaut Problème d'affichage d'un JTree utilisant le HTML
    Bonjour,

    j'ai un nouveau souci d'arbre : j'ai développé un arbre JTree que j'affiche dans une jsp par le truchement d'une applet. Ce JTree est composé d'éléments dont le label est en html, ce qui me permet d'avoir du gras, de l'italique, des symboles bizarres et de belles couleurs.

    Depuis le passage de mon poste en seven, le premier affichage de l'applet se fait correctement, mais si je recharge l'applet, je n'ai plus de label affiché, seulement les icônes de mon arbre. Pourtant j'ai pu constater que le label contenu par les UserData des treenodes étaient correct.

    Le souci est le même sous firefox, IE ne serait donc pas incriminable... De plus cela marchait bien sous XP. Dans les deux cas je suis en java 1.6. Si je ferme mon navigateur et que je le relance, j'ai à nouveau un premier affichage correct, et les suivants sont véreux.

    Voici le code de création de l'arbre, réduit au strict minimum pour tester le souci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    JTree tree = new JTree();
    ((DefaultTreeModel) tree.getModel()).setRoot(getTreeRoot());
    JScrollPane treeView = new JScrollPane(tree);
    getContentPane().add(treeView);
     
     
    private DefaultMutableTreeNode getTreeRoot() {
        DefaultMutableTreeNode top = new DefaultMutableTreeNode("<html><b>Ceci</b> est un test");
        DefaultMutableTreeNode bot1= new DefaultMutableTreeNode("<html><b>Ceci</b> est un test 1");
        DefaultMutableTreeNode bot2= new DefaultMutableTreeNode("<html><b>Ceci</b> est un test 2");
        top.add(bot1);
        top.add(bot2);
    }
    Si vous êtes dans la même config que moi, est-ce un souci que vous reproduisez? Il faudrait que je sache si ça vient vraiment de la config de nos postes de dev ou si c'est un bug java (que je n'ai pas réussi à trouver dans la liste des bugs répertoriés)

    Par avance merci.

  2. #2
    Membre expérimenté Avatar de uhrand
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 203
    Par défaut
    Je croix que tu as un problème de synchronisation dans un environnement de multithreading. Dans ce cas, la source du problème pourrait même se trouver dans ton code java!

    D'une façon générale, les méthodes principales d'un applet - init, start, stop, et destroy - devraient utiliser la méthode SwingUtilities.invokeAndWait afin que le code qui fait référence aux composants Swing est exécuté sur le thread de distribution des événements. Sinon, les méthodes peuvent retourner avant que le GUI est créé ou arrêté, ce qui peut causer des problèmes pour un navigateur Web qui lance un applet.

    Donc avant de faire autre chose, vérifie une fois, si tu as correctement utilisé SwingUtilities.invokeAndWait dans tous ces cas.

    Cordialement,
    André

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Par défaut
    Ok, je vais regarder ça. Il est vrai que je n'ai jamais fais attention à ça dans la mesure où ça a toujours marché jusqu'à maintenant.

    Merci en tout cas pour ta réponse!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Par défaut
    Hélas ça n'a pas l'air d'être ça.

    J'appelle la création de mon GUI via une méthode createGUI dans le init() de mon applet.

    Que j'appelle directement
    ou que je l'appelle par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SwingUtilities.invokeAndWait(new Runnable(){ public void run() {createGUI();}});
    le résultat est le même, toujours ce problème d'affichage...

    Ceci-dit j'ai ce souci même avec le code tout simple donné en exemple dans le premier post, c'est pour cela que je me demandais si j'étais seul à avoir ce souci...

  5. #5
    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
    Dans quelle méthode de l'Applet sont faits ces appels?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Par défaut
    Bonjour,

    tout cela est appelé dans l'init() :

    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
    public void init() {
     
        	boolean DEBUG = true;
     
            // on applique un look and feel local
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (Exception ex) {
                System.out.println("Unable to load native look and feel");
            }
     
     
     
    	if (!DEBUG) {
    		try {
    			javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
    				public void run() {
    					createGUI();
    				}
    			});
    		} catch (Exception e) {
    			System.err.println("createGUI didn't successfully complete");
    		}
    	} else {
     
    		createGUI();
    	}
    }

Discussions similaires

  1. problème d'affichage RSS 2.0 depuis source html
    Par mims1664 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 09/09/2008, 11h03
  2. [Mail] problème d'affichage d'un e-mail en html
    Par nixonne dans le forum Langage
    Réponses: 1
    Dernier message: 25/06/2007, 16h15
  3. Problème à l'affichage quand j'utilise SDL
    Par vincechaff10 dans le forum SDL
    Réponses: 8
    Dernier message: 25/07/2006, 11h34
  4. JTree : problème d'affichage ajout/suppression noeud
    Par rnan dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2006, 08h12
  5. [Swing]Problème d'affichage sur un JTree
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 19/01/2006, 10h41

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