PDA

View Full Version : [JAVA] - Come eliminare un nodo selezionato di un JTree!


mercurio76
20-08-2005, 16:41
Ragazzi spero che qualcuno di voi sia un guru del giava perchè sto impazzendo.
Sto facendo un programmino in java per archiviare tutti i miei cd di dati.
Per fare ciò memorizzo la struttura del cd in un JTree.
Fin qui tutto ok..funge a dovere e sono contento :D
Però adesso volevo poter cambiare la struttura dell'albero dinamicamente..ad esempio posso voler cancellare un nodo del JTree.
Bene...come cavolo si fa a cancellare il nodo selezionato!!! Ho visto mille esempi ma non me ne funziona uno!!
Qaulcuno sa quali sono i metodi da usare?

Io per adesso ho collegato un popupMenu all'albero. Al click col tasto destr sul nodo selezionato compare il menù con l'elemento 'Cancella'.
Ho messo un listener su Cancella e nel listener gli devo dire "Cancellami sto nodo del ca**o" ma non so come fare.

Non so se sono stato chiaro.

Intanto grazie per quelli di voi che mi risponderanno ;)

anx721
20-08-2005, 21:21
Prova ad aggiungere al JTree un TreeSelectionListener che implementa un metodo

void valueChanged(TreeSelectionEvent evt)

all'interno del quale dall'evento evt ricavi il cammino del nodo selezionato con e.getPath:

TreePath selPath = evt.getPath();

Se l'utente sceglie di eliminare il nodo da selPath puoi ricavare il nodo:

DefaultMutableTreeNode node = (DefaultMutableTreeNode)selPath.getPathComponent();

e puoi eliminare il nodo

tree.getModel().removeNodeFromParent(node);

BlueDragon
20-08-2005, 21:26
Ti consiglio questo Tutorial ufficiale sui Tree:
http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html

Nel paragrafo "Dynamically Changing a Tree" (http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html#dynamic) mostra come creare dei listener per aggiungere nodi premendo un bottone. Modificando quel codice dovresti arrivare ad ottenere la rimozione...
...oppure semplicemente guardati direttamente il codice del programma di esempio, che ha anche la funzione di rimozione :D

DynamicTreeDemo:
http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/index.html#DynamicTreeDemo

EDIT: Ci metto troppo a postare, anx721 mi ha preceduto :)

anx721
20-08-2005, 22:52
no, fa bene a leggersi quei tutorial anche percheilcodice di esempio che ho dato io l'ho preso al volo da un'applicazione che avevo fatto 2 anni fa quindi potrebbe pure conenre errori.