bonjour, je cherche a sauvegarder mon Jtree (que g édité graphiquement sur eclipse )dans ma base de donnees MySQL; Si quelqu'un a une idée. MERCI.
Version imprimable
bonjour, je cherche a sauvegarder mon Jtree (que g édité graphiquement sur eclipse )dans ma base de donnees MySQL; Si quelqu'un a une idée. MERCI.
Bonjour,
ben tu ouvres la Base de Données, tu mets le JTree dedans, et tu refermes la Base de Données :aie:
Plus sérieusement, qu'est-ce qui te pose problème ?
Et bien en fait g à moitié résolu le problème puisque je l'ai sérializé en xml ( g abandonné l'idée de la base de données) mais le problème maintenant c'est pour le réouvrir dans mon interface graphique... ca bug ...quelqu'un aurait-il un exemple?
:? avec la tonne de code que tu nous fournis, on va surement pouvoir t'aider...
Tu nous dis qu'il y a un problème, super cool, mais nous on peut pas deviner qu'est ce qui cloche et encore moins comment résoudre ce fameux problème. Et je n'ai pas d'exemple sous la main, je ne vois même pas vraiment ce que tu veux faire.
Merci de nous aider à t'aider ;)
bjr,
voila, en fait g crée un bouton sur mon interface qui permet de sauver mon arbre en prenant la racine (rootNode). -->Jusque la pas de probleme il me crée bien mon tree.xmlCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 private JButton getJButton2() { if (jButton2 == null) { jButton2 = new JButton(); jButton2.setBounds(new Rectangle(16, 146, 100, 22)); jButton2.setText("sauver"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { try { XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("tree.xml"))); encoder.writeObject(rootNode); encoder.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } } }); } return jButton2;
Le problème vient lorsque j'utilise le boutton " charger " et la ca plante. (pas a la compilation mais lorsque je clique sur celui ci.)Je pense que le problème vient de cette ligne de code:Code:
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 private JButton getJButton3() { if (jButton3 == null) { jButton3 = new JButton(); jButton3.setBounds(new Rectangle(18, 11, 97, 27)); jButton3.setText("charger"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { try { XMLDecoder decoder = new XMLDecoder( newBufferedInputStream (new FileInputStream( "tree.xml" ))); TreeModel model = (TreeModel)decoder.readObject(); decoder.close(); if( model != null ) { tree = new JTree(model); else tree = new JTree(); } catch (FileNotFoundException e1) { System.out.println("on est ds exeption"); e1.printStackTrace(); } } }); } return jButton3; }
TreeModel model = (TreeModel)decoder.readObject();
Journal d'erreur:
---------------
Code:
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 java.lang.ClassCastException: javax.swing.tree.DefaultMutableTreeNode at pack.Interface$4.actionPerformed(Interface.java:407) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1815) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1868) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:449) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:287) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:274) at java.awt.Component.processMouseEvent(Component.java:5196) at java.awt.Component.processEvent(Component.java:4993) at java.awt.Container.processEvent(Container.java:1607) at java.awt.Component.dispatchEventImpl(Component.java:3712) at java.awt.Container.dispatchEventImpl(Container.java:1665) at java.awt.Component.dispatchEvent(Component.java:3574) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3521) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3236) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3166) at java.awt.Container.dispatchEventImpl(Container.java:1651) at java.awt.Window.dispatchEventImpl(Window.java:1653) at java.awt.Component.dispatchEvent(Component.java:3574) at java.awt.EventQueue.dispatchEvent(EventQueue.java:536) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:237) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:187) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:181) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:173) at java.awt.EventDispatchThread.run(EventDispatchThread.java:136)
--------------merci pour votre aide éventuelle-------------------
Normal : tu sauvegardes un DefaultMutableTreeNode, et lorsque tu charges l'objet, tu essaies de le caster en TreeModel. D'où la ClassCastException.
Pour décoder, essaie plutôt ceci :Code:
1
2
3 XMLDecoder decoder = ...; TreeNode rootNode = (TreeNode)decoder.readObject(); TreeModel model = new DefaultTreeModel(rootNode);
MERCI...:D c ça;
par contre mon arbre sur mon interface graphique ne s'actualise toujours pas.
g essayé des commandes comme,
SwingUtilities.updateComponentTreeUI(tree);
ou encore,
tree.updateUI() ;
ca marche pas.
Quelqu'un a-t-il une idée??
Normalement, setModel devrait le convaincre de se mettre à jour. Actualises-tu le bon JTree ? (Tu ne fais pas un autre new JTree() quelque part ?)
si effectivement je faisait un new JTree(). MERCI, t'es énorme ;)
ps: désolé pour mé pauvre pb a la con mais je débute...
:lun: j'avoue que là je me suis lancé un peu au pif, et j'ai eu de la chance de tomber juste.
Un petit clic sur le bouton :resolu: (juste en dessous) ?
Juste une derniere question. Comment on peut supprimer le tree.xml???
La fonction delete() ne marche-t-elle pas que sur les fichier?
La fonction delete() de la classe java.io.File marche sur des fichiers et des dossiers (cf. javadoc). Quel est ton problème exactement ?
ben a la suite du code precedent je voudrais supprimer mon tree.xml que j'ai crée.
On a compris, mais quel est le problème ? Le fichier n'est pas supprimé quand tu fais delete() ? Il y a une exception ? Fais-tu au moins tonFicher.delete() dans ton code ?
La plupart du temps, si une suppression de fichier echou, c'est dû à la non fermeture de stream, il faut donc vérifier qu'ils sont tous bien fermés.
Bonne chance.