Bonjour,
Je suis en train de créer une application manipulant des JTree. J'ai crée un type de noeud spécifique contenant une étique et une String associé (une description). Cette classe appellé ContentNode implemente MutableTreeNode. Je serialize ensuite cette objet pour récupérer mon arbre dans un applet afin de visualiser ses noeuds et leurs descriptions associées. Voici le code :
Code :
- public void valueChanged(TreeSelectionEvent e) {
- //On récupere le noeud sélectionné par l'utilisateur
- currentNode = e.getNewLeadSelectionPath();
- //Affiche la page html du noeud courant
- if(currentNode != null) {
- MutableTreeNode noeud = (MutableTreeNode)currentNode.getLastPathComponent();
- System.out.println("noeud : "+noeud.getClass()); //Retourne bien ContentNode
- //J'affiche le String associé au noeud cliqué
- Editeur.setText(((ContentNode)noeud).getSiteHtml());
- }
- }
|
la ligne
Code :
- Editeur.setText(((ContentNode)noeud).getSiteHtml());
|
retourne une erreur :
Code :
- java.lang.ClassCastException
- at client.AppletTree.valueChanged(AppletTree.java:147)
- at javax.swing.JTree.fireValueChanged(Unknown Source)
- at javax.swing.JTree$TreeSelectionRedirector.valueChanged(Unknown Source)
- at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(Unknown Source)
- at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(Unknown Source)
- at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(Unknown Source)
- at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(Unknown Source)
- at javax.swing.JTree.setSelectionPath(Unknown Source)
- at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(Unknown Source)
- at javax.swing.plaf.basic.BasicTreeUI$MouseHandler.handleSelection(Unknown Source)
- at javax.swing.plaf.basic.BasicTreeUI$MouseHandler.mousePressed(Unknown Source)
- at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
- at java.awt.Component.processMouseEvent(Unknown Source)
- at java.awt.Component.processEvent(Unknown Source)
- at java.awt.Container.processEvent(Unknown Source)
- at java.awt.Component.dispatchEventImpl(Unknown Source)
- at java.awt.Container.dispatchEventImpl(Unknown Source)
- at java.awt.Component.dispatchEvent(Unknown Source)
- at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
- at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
- at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
- at java.awt.Container.dispatchEventImpl(Unknown Source)
- at java.awt.Component.dispatchEvent(Unknown Source)
- at java.awt.EventQueue.dispatchEvent(Unknown Source)
- at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
- at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
- at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
- at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
- at java.awt.EventDispatchThread.run(Unknown Source)
|
En gros je ne peux convertir mon MutableTreeNode (le noeud courant) en un ContentNode.
Pour etre sur voici l'entete de ma classe ContentNode :
Code :
- public class ContentNode implements MutableTreeNode, Serializable {
|
Le pire étant que j'ai exactement le meme code non pas dans un Applet mais dans un JPanel et la aucune erreur tout se passe bien...
Il y a peut etre un probleme avec ma sérialization...
Si quelqu'un voit ca serai super ! Merci 
Message édité par Loizo le 14-05-2005 à 16:16:25