Ajout d'un noeud à un Jtree
Kilkenny95
Messages postés
178
Statut
Membre
-
Kilkenny95 Messages postés 178 Statut Membre -
Kilkenny95 Messages postés 178 Statut Membre -
Bonjour à toutes et à tous,
J'ai créé un jTree "arbre", et j'aimerai ajouter des noeuds à l'aide d'un bouton et d'une zone de texte.
J'ai pour l'instant le code suivant qui me permet de sélectionner un composant de mon arbre et l'écrire dans la zone de texte.
J'aimerai savoir comment faire, merci d'avance !!!
UPDATE
J'ai continué mon code
Mais j'ai des erreurs au moment où j'appuie sur mon bouton addNode....

J'ai créé un jTree "arbre", et j'aimerai ajouter des noeuds à l'aide d'un bouton et d'une zone de texte.
J'ai pour l'instant le code suivant qui me permet de sélectionner un composant de mon arbre et l'écrire dans la zone de texte.
arbre.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
if (arbre.getLastSelectedPathComponent() != null) {
System.out.println(arbre.getLastSelectedPathComponent());
DefaultMutableTreeNode parent = (DefaultMutableTreeNode) arbre.getLastSelectedPathComponent();
nomAddedNode.setText(parent.getUserObject().toString());
}
}
J'aimerai savoir comment faire, merci d'avance !!!
UPDATE
J'ai continué mon code
arbre.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
System.out.println(arbre.getLastSelectedPathComponent());
DefaultMutableTreeNode parent = (DefaultMutableTreeNode) arbre.getLastSelectedPathComponent();
nomAddedNode.setText(parent.getUserObject().toString());
addNode.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==addNode){
System.out.println("addnode");
DefaultMutableTreeNode parent = (DefaultMutableTreeNode) arbre.getLastSelectedPathComponent();
DefaultMutableTreeNode nouveau = new DefaultMutableTreeNode(nomAddedNode.getText());
parent.add(nouveau);
//Reload Jtree
DefaultTreeModel model = (DefaultTreeModel) arbre.getModel();
model.reload();
}
}
});
// removeNode.addActionListener(this);
}
Mais j'ai des erreurs au moment où j'appuie sur mon bouton addNode....

A voir également:
- Ajout d'un noeud à un Jtree
- Demande d'ajout snap qui disparait ✓ - Forum Snapchat
- Ajouter un profil netflix payant - Accueil - Guide streaming
- Ajout rapide snap - Forum Snapchat
- Ajout snap sans rien d'écrit - Forum Snapchat
- Impossible d'ajouter un ami sur facebook - Guide
J'ai pu continuer mon code en ajoutant un deuxième bouton supprimer "removeNode" qui "fonctionne".
public void JTreebdd() { DefaultMutableTreeNode racine = new DefaultMutableTreeNode("bdd MSPIFM"); DefaultMutableTreeNode grosVolume = new DefaultMutableTreeNode("Gros volume"); DefaultMutableTreeNode gv1 = new DefaultMutableTreeNode(" GV-1"); DefaultMutableTreeNode gv2 = new DefaultMutableTreeNode(" GV-2"); DefaultMutableTreeNode gv3 = new DefaultMutableTreeNode(" GV-3"); DefaultMutableTreeNode gv4 = new DefaultMutableTreeNode(" GV-4"); DefaultMutableTreeNode gv1_E1 = new DefaultMutableTreeNode("E1_gv"); DefaultMutableTreeNode gv1_E2 = new DefaultMutableTreeNode("E2_gv"); DefaultMutableTreeNode gv1_E3 = new DefaultMutableTreeNode("E3_gv"); DefaultMutableTreeNode gv1_E4 = new DefaultMutableTreeNode("E4_gv"); DefaultMutableTreeNode boite1_E1_GV = new DefaultMutableTreeNode("Boite 1"); DefaultMutableTreeNode carteA = new DefaultMutableTreeNode("Carte A"); DefaultMutableTreeNode piecesA = new DefaultMutableTreeNode("Pièces A"); carteA.add(piecesA); boite1_E1_GV.add(carteA); gv1_E1.add(boite1_E1_GV); gv1.add(gv1_E1); gv1.add(gv1_E2); gv1.add(gv1_E3); gv1.add(gv1_E4); grosVolume.add(gv1); grosVolume.add(gv2); grosVolume.add(gv3); grosVolume.add(gv4); racine.add(grosVolume); DefaultMutableTreeNode salleCablage = new DefaultMutableTreeNode("Salle de cablâge"); DefaultMutableTreeNode sc1 = new DefaultMutableTreeNode(" SC-1"); DefaultMutableTreeNode sc1_E1 = new DefaultMutableTreeNode("E1_sc"); DefaultMutableTreeNode boite1_E1_SC = new DefaultMutableTreeNode("Boite 1"); DefaultMutableTreeNode carteB = new DefaultMutableTreeNode("Carte B"); DefaultMutableTreeNode piecesB = new DefaultMutableTreeNode("Pièces B"); carteB.add(piecesB); boite1_E1_SC.add(carteB); sc1_E1.add(boite1_E1_SC); sc1.add(sc1_E1); salleCablage.add(sc1); racine.add(salleCablage); JTree arbre = new JTree(racine); JScrollPane scroll = new JScrollPane(arbre); getContentPane().add(scroll); this.setVisible(true); arbre.addTreeSelectionListener(new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { System.out.println(arbre.getLastSelectedPathComponent()); TreeSelectionModel smd = arbre.getSelectionModel(); if(smd.getSelectionCount()>0){ DefaultMutableTreeNode parent = (DefaultMutableTreeNode) arbre.getLastSelectedPathComponent(); nomAddedNode.setText(parent.getUserObject().toString()); } addNode.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (e.getSource()==addNode){ DefaultMutableTreeNode parent = (DefaultMutableTreeNode) arbre.getLastSelectedPathComponent(); DefaultMutableTreeNode nouveau = new DefaultMutableTreeNode(nomAddedNode.getText()); parent.add(nouveau); //Reload Jtree DefaultTreeModel model = (DefaultTreeModel) arbre.getModel(); model.reload(); } removeNode.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (e.getSource()==removeNode){ DefaultMutableTreeNode parent = (DefaultMutableTreeNode) arbre.getLastSelectedPathComponent(); if (parent != arbre.getModel().getRoot()) { DefaultTreeModel model = (DefaultTreeModel) arbre.getModel(); model.removeNodeFromParent(parent); model.reload(); } } } }); } }); } }); } image.pngEn appuyant sur le bouton "addNode", j'ai bien un noeud qui s'ajoute dynamiquement à mon arbre, mais j'obtiens les erreurs suivantes:
La ligne 165 correspond au public void actionPerformed, au niveau de la ligne "parent.add(nouveau);"
Pour être pus exacte, cette erreur apparait lorsque j'ajoute deux noeuds à la suite...Même si tous les noeuds ajoutés apparaissent quand même sur mon arbre.
Pour faire simple, j'ai l'impression que mon code gère mal l'appuie sur le même bouton plusieurs fois d'affilé.
Merci de ton aide.
Cela veut dire que "parent" est null.
C'est un premier pas, vous devez maintenant suivre son initialisation. Mais je ne comprends pas le fait que les noeuds s'affichent correctement.
J'ai migré mon jtree dans une nouvelle classe à part, et le problème ne survient apparement plus...Mais il y a quelque chose de bizarre, mon programme doit m'afficher sur ma console le mot cliqué sur mon Jtree, il le fait....Mais l'affiche 14 fois....APres ce n'est pas gênant...Mais bizarre