Bonsoir à tous
j'essaie de développer une aplli ftp en java mais je coince sur la mise en place d'un jTree affichant la liste des répertoires d'un lecteur/DisqueDur
En fait dans mon application, j'ai mis une liste contenant la liste des lecteurs/Disques disponibles sur le PC (C:/, D:/, ...) ainsi qu'un jTree devant afficher en fonction de cette sélection la liste des répertoires le contenant (évidement que le 1er Niveau au départ et avec expansion si on clique sur un répertoire ou clique sur l'icône d'expansion)
J'ai parcouru un peu tout le forum Java, mais je n'ai jamais réussi à implanter certaines méthodes données. Donc j'ai essayé de faire de ce qui y était mis.
voici mon Frame de l'état actuel du FTP :
les codes des méthodes d'écoute, celui pour la sélection dans la liste des lecteurs qui change le jTrre en fonction du lecteur sléectionné :
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 public class FrameFTP extends javax.swing.JFrame { protected DefaultMutableTreeNode root; protected TreeModel model; /** Creates new form FrameFTP */ public FrameFTP() { initComponents(); SwingUtilities.updateComponentTreeUI(this); //jComboBoxLecteurs.addActionListener(this); File[] listeRacine = File.listRoots(); for (int i = 0; i < listeRacine.length; i++) { jComboBoxLecteurs.addItem(listeRacine[i]); } File racineSelect = new File(jComboBoxLecteurs.getSelectedItem().toString()); MutableTreeNode root = new DefaultMutableTreeNode(jComboBoxLecteurs.getSelectedItem().toString()); construireTree(racineSelect); DefaultTreeModel model = new DefaultTreeModel(root); jTreeRepsLocal = new JTree(root); jTreeRepsLocal.setExpandsSelectedPaths(true); } /** Fonction de contruction d'un arbre */ private void construireTree(File racine) { DefaultMutableTreeNode tempNode = new DefaultMutableTreeNode(racine); trouverSousRep(tempNode, racine); root.add(tempNode); jTreeRepsLocal.setModel(new DefaultTreeModel(root)); SwingUtilities.updateComponentTreeUI(jTreeRepsLocal); } /** Fonction qui trouve le sousRep du repertoire parent */ private void trouverSousRep(DefaultMutableTreeNode currentNode, File directory) { File fileList[] = directory.listFiles(); if (fileList == null) return; for (int i = 0; i < fileList.length; i++) if (fileList[i].isDirectory()) currentNode.add(new DefaultMutableTreeNode(fileList[i]) { public String toString() { return ((File) getUserObject()).getName(); } }); } }
la méthode pour l'expansion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private void jComboBoxLecteursActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: File racineSelect = new File(jComboBoxLecteurs.getSelectedItem().toString()); construireTree(racineSelect); jTreeRepsLocal = new JTree(root); }
le soucis, c'est qu'avec ce code, lorsque je lance le projet, avec netbeans, je récupère ce message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private void jTreeRepsLocalTreeExpanded(javax.swing.event.TreeExpansionEvent evt) { // TODO add your handling code here: setCursor(new Cursor(3)); DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) evt.getPath().getLastPathComponent(); for (int i = 0; i < selectedNode.getChildCount(); i++) { DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) selectedNode.getChildAt(i); if (childNode.isLeaf()) trouverSousRep(childNode, (File) childNode.getUserObject()); } setCursor(new Cursor(0)); }
je ne vois pas comment corriger ce problèmeException in thread "AWT-EventQueue-0" java.lang.NullPointerException
at appliftp.FrameFTP.construireTree(FrameFTP.java:88)
at appliftp.FrameFTP.jComboBoxLecteursActionPerformed(FrameFTP.java:370)
at appliftp.FrameFTP.access$200(FrameFTP.java:24)
at appliftp.FrameFTP$4.actionPerformed(FrameFTP.java:210)
at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1197)
at javax.swing.JComboBox.contentsChanged(JComboBox.java:1268)
at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:100)
at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:88)
at javax.swing.DefaultComboBoxModel.addElement(DefaultComboBoxModel.java:126)
at javax.swing.JComboBox.addItem(JComboBox.java:690)
at appliftp.FrameFTP.<init>(FrameFTP.java:40)
at appliftp.FrameFTP$6.run(FrameFTP.java:407)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
le 1er "at ...." renvoi à la méthode contruireTree surj'ai uploadé le fichier ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part root.add(tempNode);
si quelqu'un veut bien m'aider, merci par avance
Partager