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 :

Comportement par défaut d'un JTree


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Comportement par défaut d'un JTree
    Bonjour,

    je vais essayé d'être assez clair!

    je cherche à faire mon propre JTree, tout va bien pour la création et tout..
    mon problème c'est que je souhaite que le root du JTree soit déplié par défaut.

    ici le code de la class complet. à l'exécution c'est replié! je ne vois vraiment pas la solution:
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
     
    import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.TreeSelectionModel;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultTreeCellRenderer;
    import javax.swing.ImageIcon;
     
    import java.awt.GridLayout;
     
    public class MyTreeIcon extends JPanel
            implements TreeSelectionListener {
     
        private JTree tree;
        DefaultMutableTreeNode top;
     
        public MyTreeIcon(String title) {
            super(new GridLayout(1, 0));
     
            top = new DefaultMutableTreeNode(title);
     
            //Create a tree that allows one selection at a time.
            tree = new JTree(top);
            tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
     
            //Set the icon for leaf nodes.
            ImageIcon leafIcon = new ImageIcon("./ressources/plus.png");
            if (leafIcon != null) {
                DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
                renderer.setLeafIcon(leafIcon);
                tree.setCellRenderer(renderer);
            } else {
                System.err.println("Leaf icon missing; using default.");
            }
     
            //Listen for when the selection changes.
            tree.addTreeSelectionListener(this);
     
            //JTree properties
            tree.setShowsRootHandles(true);
            tree.setToggleClickCount(1);
     
            //Create the scroll pane and add the tree to it.
            JScrollPane treeView = new JScrollPane(tree);
     
            add(treeView);
        }
     
        /** Required by TreeSelectionListener interface. */
        public void valueChanged(TreeSelectionEvent e) {
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
     
            if (node == null) {
                return;
            }
     
            Object nodeInfo = node.getUserObject();
            System.out.println(nodeInfo.toString());
        }
     
        private void addNodes(DefaultMutableTreeNode category,String title) {
            category.add(new DefaultMutableTreeNode(title));
        }
     
        private void addNodes(DefaultMutableTreeNode category, DefaultMutableTreeNode title) {
            category.add(title);
        }
     
        public void create(){
            DefaultMutableTreeNode category = new DefaultMutableTreeNode("test1");
     
            addNodes(top,category);
            addNodes(category,"Proc1.xml");
            addNodes(category,"Proc2.xml");
            addNodes(category,"Proc3,xml");
            addNodes(category,"Proc4.xml");
            addNodes(category,"Proc5.xml");
            addNodes(category,"Proc6.xml");
            addNodes(category,"Proc7.xml");
            addNodes(category,"Proc8.xml");
            addNodes(category,"Proc9.xml");
            addNodes(category,"Proc10.xml");
     
            category = new DefaultMutableTreeNode("test2");
            addNodes(top,category);
            addNodes(category,"Proc1.xml");
            addNodes(category,"Proc2.xml");
            addNodes(category,"Proc3,xml");
            addNodes(category,"Proc4.xml");
            addNodes(category,"Proc5.xml");
            addNodes(category,"Proc6.xml");
            addNodes(category,"Proc7.xml");
            addNodes(category,"Proc8.xml");
            addNodes(category,"Proc9.xml");
            addNodes(category,"Proc10.xml");
        }
     
        public static void main(String[] args) {
            //Create and set up the window.
            JFrame frame = new JFrame("TreeIconDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
     
            //Create and set up the content pane.
            MyTreeIcon newContentPane = new MyTreeIcon("Bibliothèque");
     
            newContentPane.create();
     
     
            newContentPane.setOpaque(true);
            frame.setContentPane(newContentPane);
            //Display the window.
            frame.pack();
            frame.setVisible(true);
        }
    }
    Merci pour votre aide.

  2. #2
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Bon, je viens de me rendre compte que pour déplier le Nœud Root par défaut, il faut appeler la méthode create dans le constructeur!

    le problème, c'est que je veux séparer la construction (appel du constructeur), du rajout des autres Nœuds. je vois bien que l'ajout d'un paramètre au constructeur me résoudra mon problème, mais je me demande s'il n'y pas une méthode qui permet de plier ou déplier un Nœud!?

  4. #4
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Merci william pour ta réponse ultra rapide

    Mais si c'est juste pour me renvoyer vers une autre page, ça ne sert à rien! je sais chercher de moi même du code.

    je souhaite plutôt comprendre comment cela fonctionne..

    La question c'est que si le JTree est déplié si on crée l'arborescence directement dans le constructeur, et pas ailleurs!!

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Merci william pour ta réponse

    expandAll() n'a pas l'air d'exister, mais c'est une piste qui m'a ramené vers la solution...

    il y a expandRow(int)

    merci encore

  7. #7
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    désolé si cela ne convient pas. Mais dans ce code je créé le jtree puis aprés je l'expand.


    J'avais oublié le JTree
    http://projets.developpez.com/projec...e/JTreeDb.java

    par ailleurs ton premier post mentionne le root puis ton post suivant mentionne les noeuds c'est plus la même chose.

    Bref, bonne chance dans tes recherches.

  8. #8
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Je comprend bien que c'est pas la même chose, peut être c'est mal codé mais dans le code que j'ai fournis, un Root est du même type que les Nœuds, c'est pour cela que je ne faisais pas de différence entre les deux..

    mais avec ton dernier poste, je comprend mieux ton code, expandAll est une méthode que t'as créé toi même ce n'est pas vraiment ce que je cherchai à faire.

    maintenant je comprend que lorsqu'un JTree est créé vide, il pas déplié par défaut. Si on rajoute des lignes plus tard, il faut le déplier à la main

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

Discussions similaires

  1. [XSD] Validation whitespace comportement par défaut.
    Par Stessy dans le forum Valider
    Réponses: 2
    Dernier message: 29/11/2011, 15h16
  2. Réponses: 4
    Dernier message: 13/04/2011, 11h40
  3. [JAXB] Comportement par défaut
    Par le2tbomi dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 08/10/2010, 17h00
  4. [JScrollPane] Comportement par défaut scrollbar vertical
    Par maxime_c dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 25/03/2009, 15h41
  5. [ksh] Redéfinir le comportement par défaut
    Par SnakemaN dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 20/03/2008, 16h11

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