Non ho capito tutto tutto, però ti dico subito come risolvere qualche problemino. Non è bellissima come soluzione, ma potrebbe fare al caso tuo.Originariamente inviato da Patrick Jane
ed in più si aggiunge un problema del quale ho tenuto conto precedentemente: le persone le distinguo da un ID, visto che posso avere 2 persone con lo stesso nome. Se faccio una ricerca per "Mario Rossi" ed ho 2 Mario Rossi nel database e quindi li inserisco nell'albero, quando clicco su un Mario Rossi nel nodo..come faccio sapere quale ho selezionato?
Tu crea la tua classe Node che estende DefaultMutableTreeNode.
Qui dentro puoi buttare ad esempio diverse info, potresti mettere un oggetto di tipo Persona e uno di tipo Fattura, null come default.
Quando crei un nodo Persona, crei un'istanza di questo tipo con un costruttore simile
fai l'override dei vari metodi, soprattutto di toString() in modo da avere un messaggio che dice nome nel caso di persona, fattura quello che ti pare.codice:MyNode node = new MyNode (persona); MyNode node = new MyNode (fattura);
( http://www.apl.jhu.edu/~hall/java/Sw...Tutorial-JTree guarda outilinenode, caso 4).
A questo punto ogni volta che hai un nodo, dal treePath anzichè prendere un DefaultMutableTreeNode prendi un MyNode e a seconda di chi non è null hai l'intero oggetto.
Per risparmiare risorse, ti consiglio di fare una copia "leggera" dell'oggetto (nel senso valorizza solo i dati del mex, dell'ID per persona, dati principali o chiavi per fattura), ma in linea di principio funziona (già fatto).
Potresti fare una Node di base da cui derivi NodePersona e NodeFattura, ma fai controlli di tipo inutili (non necessari).
Scorrere la struttura, hai il getSelectedTreePath e hai il path di tutti i selezionati (attenzione ai casi di nodo chiuso).
non so se questo allegerisce i tuoi problemi.
Approccio differente quale??

Rispondi quotando