Hello...
Je me lance dans la compréhension des JTree, car j'en ai besoin dans le cadre de mon projet de développement...
C'est la première fois que j'utilise ce composant, et il me semble encore un peu obscur... (J'ai passé avec brio le cap de la compréhension des JTables, avec leur CellRenderer et leur TableAbstractModel, mais les JTree m'ont l'air bien plus ardu à comprendre...)
Voici un petit code qui m'intéresse que j'ai trouvé sur le net qui montre une sélection simple sur un JTree, mais je ne comprends pas une chose : pourquoi, lorsqu'on sélectionne un élément "GrandChild", et qu'on ferme graphiquement le folder contenant cet élément : j'ai une levée d'erreur ???
Les erreurs sont :
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 import java.awt.*; import javax.swing.*; import javax.swing.tree.*; import javax.swing.event.*; public class SelectableTree extends JFrame implements TreeSelectionListener { private JTree tree; private JTextField currentSelectionField; //************************************************************************ public static void main(String[] args) { try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception e) { System.out.println(e.toString()); } new SelectableTree(); } //************************************************************************ public SelectableTree() { super("JTree Selections"); setDefaultCloseOperation(EXIT_ON_CLOSE); Container content = getContentPane(); DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); DefaultMutableTreeNode child; DefaultMutableTreeNode grandChild; for(int childIndex=1; childIndex<4; childIndex++) { child = new DefaultMutableTreeNode("Child " + childIndex); root.add(child); for(int grandChildIndex=1; grandChildIndex<4; grandChildIndex++) { grandChild = new DefaultMutableTreeNode("Grandchild " + childIndex + "." + grandChildIndex); child.add(grandChild); } } tree = new JTree(root); tree.addTreeSelectionListener(this); content.add(new JScrollPane(tree), BorderLayout.CENTER); currentSelectionField = new JTextField("Current Selection: NONE"); content.add(currentSelectionField, BorderLayout.SOUTH); setSize(250, 275); setVisible(true); } //************************************************************************ public void valueChanged(TreeSelectionEvent event) { currentSelectionField.setText("Current Selection: " + tree.getLastSelectedPathComponent().toString()); } //************************************************************************ }
Merci d'avance pour votre aide...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 java.lang.NullPointerException at SelectableTree.valueChanged(SelectableTree.java:56) at javax.swing.JTree.fireValueChanged(JTree.java:2392) at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:2763)
Partager