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] Rajouter un noeud


Sujet :

Composants Java

  1. #1
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 186
    Points : 261
    Points
    261
    Par défaut [JTree] Rajouter un noeud
    Alors voila, j'ai décidé d'utiliser swing +awt, pour faire une interface, via le plugin visual éditor de Eclipse.
    Bon je commence par quelque chose de compliqué alors que j'y connais pas grand chose en swing mais jusqu'a présent grâce a l'aide de google je m'en sors pas trop mal. Le seul problème qui me reste, c'est que je n'arrive pas ajouter dynamique un noeud a un JTree. Je m'explique, je veux faire une arborescence de disque dur, mais contrairement a tout les codes sources que j'ai trouvé sur le sujet, ne pas charger toute l'arborescence du pc d'un coup mais le faire dynamiquement a chaque fois que l'utilisateur déploie un noeud.
    Je me suis basé sur un code existant qui charge tout l'ordi en mémoire, je lui fait arreter le chargement a un niveau en dessous du noeud actuelle, et l'opération doit se répéter a chaque déploiement de noeud.
    Alors ca marche, c'est a dire qu'il me liste bien tout les dossiers et fichier du noeud sur lequel l'utilisateur a cliqué grâce a un TreeExpansionListener().
    Malheureusement impossible de les ajouter au noeud ouvert. Je ne sais pas comment faire.

    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
    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
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    package graphisme;
     
    import java.awt.Frame;
    import java.awt.Dimension;
    import javax.swing.JToolBar;
    import java.awt.Rectangle;
    import javax.swing.JMenu;
    import java.awt.event.KeyEvent;
    import java.awt.Button;
    import java.awt.Window;
    import java.awt.Panel;
    import java.awt.GridBagLayout;
    import java.awt.Choice;
    import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.MutableTreeNode;
    import javax.swing.tree.TreeNode;
     
    import java.awt.GridBagConstraints;
    import java.io.File;
    import java.util.ArrayList;
     
    import javax.swing.JButton;
    import javax.swing.JScrollBar;
    import javax.swing.JScrollPane;
     
    public class Interface extends Frame {
     
    	private static final long serialVersionUID = 1L;
    	private Panel panel = null;
    	private Button load = null;
    	private Button save = null;
    	private Choice layer = null;
    	private Panel tree = null;
    	private JTree arbre = null;
    	private File[] 	_roots;
    	private String root ;
    	private boolean develop = false ;
    	private static boolean visibleTree = false ;
    	private JScrollPane scrollPane = null;
    	private JTree arbre1 = null;
    	/**
             * This is the default constructor
             */
    	public Interface() {
    		super();
    		initialize();
    	}
     
    	/**
             * This method initializes this
             * 
             * @return void
             */
    	private void initialize() {
    		this.setLayout(null);
    		this.setSize(1024, 768);
    		this.setTitle("Pokeditor");
    		this.setVisible(true);
    		this.add(getPanel(), null);
    		this.add(getTree(), null);
    		this.addWindowListener(new java.awt.event.WindowAdapter() {
    			public void windowClosing(java.awt.event.WindowEvent e) {
    				System.exit(0); // TODO Auto-generated Event stub windowClosing()
    			}
    		});
    	}
     
    	/**
             * This method initializes panel        
             *      
             * @return java.awt.Panel       
             */
    	private Panel getPanel() {
    		if (panel == null) {
    			panel = new Panel();
    			panel.setLayout(null);
    			panel.setBounds(new Rectangle(20, 34, 603, 73));
    			panel.add(getLoad(), null);
    			panel.add(getSave(), null);
    			panel.add(getLayer(), null);
    		}
    		return panel;
    	}
     
    	/**
             * This method initializes load 
             *      
             * @return java.awt.Button      
             */
    	public void setVisibleTree()
    	{
    		tree.setVisible(visibleTree);
    	}
    	private Button getLoad() {
    		if (load == null) {
    			load = new Button();
    			load.setBounds(new Rectangle(10, 5, 87, 23));
    			load.setLabel("Charger");
    			load.addActionListener(new java.awt.event.ActionListener() {
    				public void actionPerformed(java.awt.event.ActionEvent e) {
    					visibleTree = true ;// TODO Auto-generated Event stub actionPerformed()
    				}
    			});
    		}
    		return load;
    	}
     
    	/**
             * This method initializes save 
             *      
             * @return java.awt.Button      
             */
    	private Button getSave() {
    		if (save == null) {
    			save = new Button();
    			save.setBounds(new Rectangle(10, 37, 86, 23));
    			save.setLabel("Sauvegarder");
    		}
    		return save;
    	}
     
    	/**
             * This method initializes layer        
             *      
             * @return java.awt.Choice      
             */
    	private Choice getLayer() {
    		if (layer == null) {
    			layer = new Choice();
    			layer.add("Layer 0") ;
    			layer.add("Layer 1") ;
    			layer.add("Layer 2") ;
    			layer.add("Layer 3") ;
    			layer.setBounds(new Rectangle(132, 5, 141, 25));
    			layer.addItemListener(new java.awt.event.ItemListener() {
    				public void itemStateChanged(java.awt.event.ItemEvent e) {
    					System.out.println("itemStateChanged()"); // TODO Auto-generated Event stub itemStateChanged()
    				}
    			});
    		}
    		return layer;
    	}
     
    	/**
             * This method initializes tree 
             *      
             * @return java.awt.Panel       
             */
    	private Panel getTree() {
    		if (tree == null) {
    			tree = new Panel();
    			tree.setLayout(null);
    			tree.setBounds(new Rectangle(24, 114, 286, 494));
    			tree.setVisible(false);
    			tree.add(getScrollPane(), null);
    		}
    		return tree;
    	}
     
    	/**
             * This method initializes jTree        
             *      
             * @return javax.swing.JTree    
             */
    	public DefaultMutableTreeNode getSubDirs(File root, boolean dev)
    	{
    		// on créé un noeud
    		DefaultMutableTreeNode racine = new DefaultMutableTreeNode(root,true);
    		this.develop = dev;
    		// on recupère la liste des fichiers et sous rep 
    		File[] list = root.listFiles();
    		if ( list != null)
    		{
    			// pour chaque sous rep on appel cette methode => recursivité
    			for (int j = 0 ; j<list.length ; j++)
    			{
    				System.out.println(list[j]);
    				DefaultMutableTreeNode file = null;
    				if (!this.develop)
    				{
    					this.root = root.toString() ;
    					this.develop = true ;
    				}
    				if (list[j].isDirectory() && this.root == root.toString())
    				{
    					this.root = root.toString() ;
    					file = getSubDirs(list[j], true);  
    					racine.add(file);
    				}
    				else
    				{
    					racine.add(new DefaultMutableTreeNode(list[j])) ;
    				}
    			}
    			//this.develop = false ;
    		}
    		return racine;
    	}
     
    	/**
             * This method initializes jScrollBar   
             *      
             * @return javax.swing.JScrollBar       
             */
    	private JScrollPane getScrollPane() {
    		if (scrollPane == null) {
    			scrollPane = new JScrollPane();
    			scrollPane.setBounds(new Rectangle(0, 0, 286, 494));
    			scrollPane.setViewportView(getArbre());
    			scrollPane.add(getArbre()) ;
    		}
    		return scrollPane;
    	}
     
    	/**
             * This method initializes arbre1       
             *      
             * @return javax.swing.JTree    
             */
    	private void addNode(DefaultMutableTreeNode node)
    	{
    		System.out.println("ok"); 
    	}
    	private JTree getArbre() {
    		// on recupère les lecteurs
    		_roots = File.listRoots();
     
    		// on définit notre premier noeud
    		DefaultMutableTreeNode racine = new DefaultMutableTreeNode("Poste de travail",true);
     
    		// Création du jtree
    		arbre = new JTree(racine);
     
    		// pour chaque lecteur
    		for (int i = 0 ; i<_roots.length ; i++)
    		{
    			// on recupère son contenu grace a getSubDirs
    			DefaultMutableTreeNode root = getSubDirs(_roots[i], false);
    			// et on l ajoute a notre premier noeud
    			racine.add(root);
     
    		}
    			arbre.setBounds(new Rectangle(0, 0, 286, 494));
    			arbre.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() {
    				public void treeExpanded(javax.swing.event.TreeExpansionEvent e) {
    					if (e.getPath().getLastPathComponent().toString() != "Poste de travail")
    					{
    						String fichier = "";
    						System.out.println(e.getPath().getLastPathComponent());
    						fichier += e.getPath().getLastPathComponent() ;
    						/*for (int i = 1 ; i <= e.getPath().getPathCount()-1 ; i++)
    						{
    							fichier += e.getPath().getPathComponent(i) + System.getProperty("file.separator") ;
    						}*/
    						System.out.println(fichier);
    						DefaultMutableTreeNode racine = getSubDirs(new File(fichier), false) ;
    						addNode(racine) ;
    					}
    				}
    				public void treeCollapsed(javax.swing.event.TreeExpansionEvent e) {
    				}
    			});
    		return arbre;
    	}
     
    }  //  @jve:decl-index=0:visual-constraint="59,1"

  2. #2
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 186
    Points : 261
    Points
    261
    Par défaut
    C'est bon en fait finalement j'utilise un JFileChooser ^^

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

Discussions similaires

  1. [JTree] Icônes des noeuds
    Par seiryujay dans le forum Composants
    Réponses: 4
    Dernier message: 01/09/2005, 11h22
  2. [JTree] Récupérer le noeud sélectionné, sans événement
    Par Bobsinglar dans le forum Composants
    Réponses: 4
    Dernier message: 26/05/2005, 18h06
  3. [Jtree] revenir au noeud precedemment selectionné
    Par maxxou dans le forum Composants
    Réponses: 4
    Dernier message: 03/01/2005, 20h10
  4. Réponses: 3
    Dernier message: 09/08/2004, 12h24
  5. Réponses: 3
    Dernier message: 27/07/2004, 12h01

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