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] ajouter des nodes progressivement


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 411
    Par défaut [JTree] ajouter des nodes progressivement
    bonjour,

    voici mon code

    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
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
    import javax.swing.*;
    import javax.swing.tree.*;
     
    public class A
    {
    		private static Object [] nodeNames = { "C:","two", "three", "four", "five", "six", "seven", new Integer(8), new Integer(9), new Float(10) };
    		private static boolean [] leaf = { false, true, true, false, true, true, false, true, true, true };
    		public JTree jt;
     
    		public A()
    		{
    			JFrame jf = new JFrame("Tree Test");
    			DefaultMutableTreeNode [] nodes = new DefaultMutableTreeNode[10];
     
    			for (int i = 0; i < nodes.length; i++) 
    			{
    				nodes[i] = new DefaultMutableTreeNode(nodeNames[i], !leaf[i]);
    			}
     
    			nodes[0].add(nodes[1]);
    			jt = new JTree(nodes[0]);
     
    			nodes[0].add(nodes[2]);
    			nodes[0].add(nodes[3]);
    			nodes[0].add(nodes[3]);
    			nodes[0].add(nodes[6]);
    			nodes[0].add(nodes[9]);
    			nodes[3].add(nodes[4]);
    			nodes[3].add(nodes[5]);
    			nodes[6].add(nodes[7]);
    			nodes[6].add(nodes[8]);
    			nodes[6].add(nodes[8]);
     
     
     
    			jf.getContentPane().add(jt, BorderLayout.CENTER);
    			jt.addMouseListener(new MouseListener (){
     
    			      public void mouseClicked(MouseEvent e) {
     
     
    			      }
     
    				public void mouseEntered(MouseEvent e) {
    					// TODO Auto-generated method stub
     
     
    				}
     
    				public void mouseExited(MouseEvent arg0) {
    					// TODO Auto-generated method stub
     
    				}
     
    				public void mousePressed(MouseEvent arg0) {
    					// TODO Auto-generated method stub
     
    				}
     
    				public void mouseReleased(MouseEvent e) {
     
    					// traite le chemin
    					TreePath selPath = jt.getPathForLocation(e.getX(), e.getY());
    			        if (selPath != null) {
     
    			        	StringBuffer a=new StringBuffer(selPath.toString());
    			        	String finaloc=traite(a);
    				        System.out.println(finaloc);
     
    				    // envoie une demande au serveur en lui envoyant le chemin
     
     
    				} }
    			});
     
     
    			jf.pack();
    			jf.setVisible(true);
    		}
     
    		public String traite(StringBuffer a)
    		{
    			String ee=a.toString();
    			String ac=ee.replace(" ", "");
    			String av=ac.replace("[", "");
    			String ab=av.replace("]", "");
    			String aaa=ab.replace(",", "\\");
    			return aaa;
    		}
     
    }
    j'aimerais pouvoir ajouter des nodes, donc des autres branches et des feuilles à l'arbre ainsi réalisé dès que l'utilisateur clique sur une branche. Est-ce possible ?

    comment ?

    merci

  2. #2
    Membre expérimenté Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Par défaut
    ce code devrait t'être utile en remplacant tree par le nom de ton JTree et enj ajoutant un TreeModel genre DefaultTreeModel que tu passes au constructeur de ton JTree:
    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
     
        /** Remove all nodes except the root node. */
        public void clear() {
    		DefaultMutableTreeNode aParentNode=rootNode;
    		int aCount = rootNode.getChildCount();
    		for (int i = 0; i < aCount; i++) {
    			DefaultMutableTreeNode aChild=(DefaultMutableTreeNode)rootNode.getChildAt(i);
    			if(aChild.getUserObject().equals(aLayerManager.getCurrentGraph()))
    			{
    				aParentNode=aChild;
    			}
    		}
            aParentNode.removeAllChildren();
            treeModel.reload();
        }
     
        /** Remove the currently selected node. */
        public void removeCurrentNode() {
            TreePath currentSelection = tree.getSelectionPath();
            if (currentSelection != null) {
                DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)
                             (currentSelection.getLastPathComponent());
                MutableTreeNode parent = (MutableTreeNode)(currentNode.getParent());
                if (parent != null) {
                    treeModel.removeNodeFromParent(currentNode);
                    return;
                }
            } 
     
        }
     
        /** Add child to the currently selected node. */
        public DefaultMutableTreeNode addObject(Object child) {
            DefaultMutableTreeNode parentNode = null;
            TreePath parentPath = tree.getSelectionPath();
     
            if (parentPath == null) {
                parentNode = rootNode;
            } else {
                parentNode = (DefaultMutableTreeNode)
                             (parentPath.getLastPathComponent());
            }
     
            return addObject(parentNode, child, true);
        }
     
        public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
                                                Object child) {
            return addObject(parent, child, true);
        }
     
        public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
                                                Object child, 
                                                boolean shouldBeVisible) {
            DefaultMutableTreeNode childNode = 
                    new DefaultMutableTreeNode(child);
     
            if (parent == null) {
                parent = rootNode;
            }
     
            treeModel.insertNodeInto(childNode, parent, 
                                     parent.getChildCount());
     
            //Make sure the user can see the lovely new node.
            if (shouldBeVisible) {
                tree.scrollPathToVisible(new TreePath(childNode.getPath()));
            }
            return childNode;
        }
    ensuite, tu peux appeller la méthode addObject(Object) pour ajouter à la racine, ou addObject(Object,Node) pour ajouter au noeud selectionné (mais ça, c'est après avoir récupéré cle TreePath de ce noeud)

    voili

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/02/2014, 11h51
  2. Ajouter des chemins dans la variable PATH
    Par Righetto Dominique dans le forum Linux
    Réponses: 7
    Dernier message: 21/03/2004, 17h38
  3. Ajouter des contrôles dans la palette des contrôles.
    Par WOLO Laurent dans le forum MFC
    Réponses: 4
    Dernier message: 22/01/2004, 08h27
  4. Réponses: 5
    Dernier message: 13/11/2003, 16h57
  5. Réponses: 1
    Dernier message: 02/01/2003, 12h45

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