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] expand


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut [JTree] expand
    Bonjour à tous,

    J'ai un JTree qui se rempli au démarrage, et j'aimerai développer tous les noueds...

    Alors déjà je comprend pas, je branche un listener sur le modèle par défaut comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _tree.getModel.addTreeModelListener(this);
    ça marche pas je reçois rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DefaultTreeModel model = new DefaultTreeModel(_rootNode);
    model.addTreeModelListener(this);
    ça marche pas je reçois rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    addTreeModelListener(new TreeModelListener()
    {
           ............
    }
    toujours rien..

    Enfin bref, j'ai une structure dans mes données, avec des écouteurs, y'a pas trop de type de données (6 dont 3 sont des listes) et chaque type est dérivé d'un type de base, ça facilite le bordel. J'ai tenté de faire un model en implémentant les bases, mais bon.. j'ai préféré le faire moi même et c'est lui qui va me prévenir qu'il a ajouter une node quelque part.

    Alors je recoi l'évènnement et je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TreePath path = new TreePath(parent.getNode().getPath());
    if(_tree.isExpanded(path) == false)
    {
          _tree.expandPath(path);
    }
    parent est un object qui englobe mon objet et la node.

    Alors le résultat... ça n'affiche pas toutes les node en fait pour chaque noeud, ça en affiche qu'une, la première...

    J'ai trouvé plusieurs algo, et si je les met là dedant, ça fait pareil. Je suppose que lorsqu'il est chargé entièrement ça posera pas de problème, mais j'peux pas détecter la fin, et puis les objects sont assez lourd a charger, ça serait cool de pouvoir voire le chargement grace au JTree puis les changements etc... enfin bref il affiche trop de données importantes pour l'utilisateur pour le cacher le temps que tout se charge.

    Quelqu'un a une idée?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    bon j'ai fait quelques tests, en fait, dès que je fait un expand, la JTree ne continu pas d'afficher les nouvelles données, pourtant elles sont bien dans le modèle..

    J'dois faire des reload? mais les reload à fait des collapse...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    bon.... j'ai fait ça, ça marche mais ça fait trop rustine à mon goût...


    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
    public void childInserted(IRCObjectNode parent, IRCObjectNode child)
    {
         // on récupère le path
         TreePath parentPath = new TreePath(parent.getNode().getPath());
     
         // s'il il n'est pas ouvert, on l'ouvre
         if(_tree.isExpanded(parentPath) == false)
         {
              _tree.expandPath(parentPath);
         }
     
         // on recharge le modèle puisqu'il se sera arrêté s'il on a fait un 
         // expand auparavent
     
         // On récupère tous les path ouvert		
         Enumeration<TreePath> tps =
                                       _tree.getExpandedDescendants(parentPath);
         // on recharge le modèle
         ((DefaultTreeModel)_tree.getModel()).reload(parent.getNode());
         // on reouvre les paths
         while (tps.hasMoreElements())
         {
             _tree.expandPath(tps.nextElement());
         }
    }
    Si quelqu'un a une meilleure soluce... j'ai dû passer à côté de quelque chose, j'utilisation des composant en Java sont en général super élaboré, tout est prévu et là... ça m'étonnerai qu'il n'y ai pas d'autre soluce m'enfin..

    Merci quand même

  4. #4
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    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
     
      /////////////////////////////////////////////
      // EXPAND & COLLAPSE
      public void ouvrir(DefaultMutableTreeNode node) {
        if (node == null) return;
     
        if (node.isLeaf() && !isNoeudParent(node))
          node = (DefaultMutableTreeNode) node.getParent();
     
        tree.expandPath(new TreePath(node.getPath()));
      }
     
      public void centrerNoeud(DefaultMutableTreeNode node) {
        if (node == null) return;
     
        tree.scrollPathToVisible(new TreePath(node.getPath()));
      }
     
      public void ouvrirTout(DefaultMutableTreeNode node) {
        if (node == null) return;
     
        for(int i=0; i<node.getChildCount(); i++) {
          ouvrirTout((DefaultMutableTreeNode) node.getChildAt(i));
          tree.expandPath(new TreePath(((DefaultMutableTreeNode) node.getChildAt(i)).getPath()));
        }
      }
     
      public void fermer(DefaultMutableTreeNode node) {
        if (node == null) return;
     
        tree.collapsePath(new TreePath(node.getPath()));
      }
     
      public void fermerTout(DefaultMutableTreeNode node) {
        if (node == null) return;
     
        for(int i=0; i<node.getChildCount(); i++) {
          fermerTout((DefaultMutableTreeNode) node.getChildAt(i));
          tree.collapsePath(new TreePath(((DefaultMutableTreeNode) node.getChildAt(i)).getPath()));
        }
      }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      public DefaultMutableTreeNode getNoeudParent() {
        return (DefaultMutableTreeNode) tree.getModel().getRoot();
      }

    Billy

  5. #5
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((DefaultTreeModel) tree.getModel()).insertNodeInto(newNode, node, node.getChildCount());

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. [JTree] expand de la racine par défaut
    Par danyboy85 dans le forum Composants
    Réponses: 7
    Dernier message: 12/08/2009, 10h22
  2. [JTree] Expand & Collapse de certains noeuds
    Par gids01 dans le forum Composants
    Réponses: 2
    Dernier message: 08/02/2008, 16h34
  3. JTree expanded dans une JTreeTable
    Par Tygrou dans le forum Composants
    Réponses: 2
    Dernier message: 26/06/2007, 15h05
  4. GUI grisée quand je fais un expand sur un JTree
    Par infaac dans le forum Composants
    Réponses: 6
    Dernier message: 25/01/2007, 14h50
  5. [Jtree] expand node
    Par nannous dans le forum Composants
    Réponses: 1
    Dernier message: 14/03/2006, 14h17

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