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 :

JTree + refresh


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 85
    Par défaut JTree + refresh
    Salut ^^
    Je viens encore vous embetez
    Je vous explique mon soucis, j'affiche une arborescence à partir d'un fichier XML (à l'aide d'un JTree), dans cette arborescence je modifie des valeurs sur des attributs, puis j'enregistre cette nouvelle arbo (qui est la meme à part certaines valeurs) dans le même fichier XML. (Je l'écrase quoi^^)

    Le truc c'est que j'aimerais refraichir l'affichage, qui est différent puisque j'ai modifié des valeurs.

    Par rafraichissement, j'entends, il vire l'affichage et le recharge (c'est comme ça que je vois les choses ^^)

    Mias je sais vraiment pas comment faire

    merki

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Par défaut
    La méthode repaint() de java.awt.Component doit pouvoir t'aider.

    (Ne pas oublier de regarder les fonctions héritées, surtout avec du swing).

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 85
    Par défaut
    Le probléme avec repaint c'est que sa rafraichi l'affichage, moi il faudrait que ça relance le parcours de mon fichier XML en realité !!!

    Je fais ça: parcours du fichier xml => affichage de ce fichier => modification du fichier sur le dur que j'ai parcouru => ré-affichage en refaisant le parcours de ce fichier.

    C'est à la derniére étape que je bloque !!!

  4. #4
    Membre éclairé Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Par défaut
    il faut que tu passes par un model (DefaultTreeModel)

    tu parcours ton fichier xml --> construit ton model --> applique ce model a une vue (le JTree) (tu as juste a passer le model dans le constructeur de ton arbre)

    ensuite qd tu modifies, tu vas modifier ton model , tu appel model.reload() et il va se charger de notifier a la vue (le JTree) qu'il doit se rafraichir pour afficher les modifs

    c'est pas plus compliqué

    @+

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 85
    Par défaut
    Hum le probléme c'est que j'ai tout passé par DefaultMutableTreeNode, j'ai que des JPanel en faite qui integre des champs de saisies des boutons etc.

    Je le passe en parametre dans mon JTree, n'y a-t-il pas la meme fonctionnalité pour le refraichissment avec le DefaultTreeModel ? - Je n'est pas trouvé le reload pour DefaultMutableTreeNode.

  6. #6
    Membre éclairé Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Par défaut
    ca ne pose pas de probleme , tu peux construire ton model a partir de ton node:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DefaultMutableTreeNode root = new DefaultMutableTreeNode();
    //tu construits tes noeuds
    DefaultTreeModel model = new DefaultTreeModel(root);
    Jtree tree = new JTree(model);
    et ensuite tu peux appeler ton model.reload();

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 85
    Par défaut
    Alors, je peux bien faire model.reload(). Malheureusement, je dois le faire dans des listeners (placé sur l'arbre). Il me met alors :

    final DefaultTreeModel top = new DefaultTreeModel(root);
    new Jtree(top);

    Puis je lance le programme, je modifie une valeur, il passe sur le bout de code top.reload() mais rien ne ce passe ....

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 85
    Par défaut
    Bon ben j'ai toujours pas trouvé lol J'ai laissé ma methode de bourrin. Vu que je vais essayer de passer mon code en jsp j'ai en tête une idée , je verrais alors !

    J'ai une petite question, j'aimerais virer l'icone par defaut d'ouverture d'un noeud. Il y a la fonction setShowsRootHandles(false); mais j'aimerais aussi le faire pour tout les autres noeuds, comment fait on ???

    Merci

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 85
    Par défaut
    Bon alors ça marche pour les noeuds, il suffisait de rajouter ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Icon openIcon = new ImageIcon("plus.png");
    Icon closedIcon = new ImageIcon("minus.png");
    ((javax.swing.plaf.basic.BasicTreeUI) tree.getUI()).setExpandedIcon(openIcon);
    ((javax.swing.plaf.basic.BasicTreeUI) tree.getUI()).setCollapsedIcon(closedIcon);
    Par contre si on pouvait me donner un coup de main pour le rafraichissement

    J'utilise le recouvrement pour l'instant genre ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Process proc = Runtime.getRuntime().exec("java -jar M:\\exe.jar");
    System.exit(0);
    ce qui me permet de relancer la prog (donc faire la "mise à jour" ).

    Mais j'aimerais ne pas quitter le programme Je trouve ça crade

    EDIT: Mon arbre est construit de la façcon suivante: tout est sur listener, c'est à dire dés qu'il clique sur un noeud sa expande juste ses fils etc..
    Donc en faite il me suffirait de rappeler la fonction qui parcours mon arbre, mais avant cela il faudrait que je detruise le contenu de ma frame ou faire un truc comme ça mais je sais pas comment faire sic.

Discussions similaires

  1. Problème de refresh sur un Jtree contenant des JPanel
    Par abroski dans le forum Composants
    Réponses: 0
    Dernier message: 23/03/2010, 09h09
  2. [JTree]redimensionnement d'un noeud
    Par grishka dans le forum Composants
    Réponses: 4
    Dernier message: 10/04/2003, 14h33
  3. [JTree] Ouvrir/Fermer l'ensemble des noeuds
    Par Math_Caen dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2003, 14h01
  4. Réponses: 2
    Dernier message: 23/12/2002, 20h34
  5. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38

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