Bonjour!
J'ai un soucis pour caster un JTree en... autre chose!
j'ai ma classe MyNode qui implémente MutableTreeNode, Cloneable et Serializable.
Les deux cast suivant sont acceptés par le compilateur :
JTree tree = new JTree();
MutableTreeNode mtn = (MutableTreeNode)tree.getModel().getRoot();
MyNode mn = (MyNode)tree.getModel().getRoot();
Mais la seconde ligne fait planter mon programme! (le reste du code qui dépend de CE cast est commenté et n'influe donc en rien sur le prog.
Pour vous donner plus d'info sur ma classe MyNode :
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 public abstract class MyNode implements MutableTreeNode, Cloneable, Serializable { /** * Le parent du noeud courant * (peut être null si on est à la racine du graphe) */ protected MutableTreeNode parent; /** * Le nom du noeud */ protected String name; /** * Constructeur par défaut protégé d'un noeud (utilisé uniquement dans les * classes filles). */ protected MyNode() { this(null); } /** * Constructeur protégé d'un noeud avec un parent (utilisé uniquement dans * les classes filles). * @param parent le parent de ce noeud. */ protected MyNode(MutableTreeNode parent) { this.parent = parent; if (this.parent != null) { this.parent.insert(this, this.parent.getChildCount()); } else { System.err.println(this + "::MyNode(null)"); } } // ... d'autres méthodes... }
Partager