Bonjour,
je débute avec Swing, et j'ai une question à propos des évènements.
En effet, dans un arbre JTree je veux afficher un nouveau noeud à chaque fois que je clique sur un bouton.
J'ai un arbre avec des répertoires et des feuilles. Je clique sur un répertoire puis sur le bouton pour rajouter un fichier (calculé à la volée).
Cela fonctionne. Mais lorsque je clique sur un autre répertoire, cela rajoute un fichier sous le répertoire sélectionné + encore une fois un fichier sous le répertoire précédemment sélectionné. Et cele indéfiniement.
Donc les évènements précédents sont toujours enregistrés.
Je n'arrive pas à les nettoyer.
Voici la classe incriminée:
Je suppose que je dois tester sur quel élement est le focus, ou alors que je dois nettoyer un buffer. Mais lequel?
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 final class NodeManager extends JFrame{ /** * */ private static final long serialVersionUID = -1244901540756582945L; private DefaultTreeModel treeModel; public NodeManager(DefaultTreeModel treeModel) { this.treeModel = treeModel; } void runAddNode(MutableTreeNode lastPathComponent, JButton addNodeButton, DefaultTreeModel treeModel) { final MutableTreeNode lp = lastPathComponent; ActionListener l = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { NodeManager.this.treeModel.insertNodeInto(new DefaultMutableTreeNode("node" + Counter.getCount()), lp, 1); } }; //addNodeTextArea.addKeyListener(kl); addNodeButton.addActionListener(l); getContentPane().validate(); } }
Pour plus d'information, je joins également le projet, sous forme de JAR avec les sources.
Le package est enterprise.gui.tree
Merci pour votre aide!
Partager