Intanto grazie mille per la tua risposta.
Si, utilizzo una semplice stringa per visualizzare la voce di menu. Nei nodi un oggetto della mia classe cosa intendi? Hai un esempio?
Grazie
Intanto grazie mille per la tua risposta.
Si, utilizzo una semplice stringa per visualizzare la voce di menu. Nei nodi un oggetto della mia classe cosa intendi? Hai un esempio?
Grazie
DefaultMutableTreeNode(Object userObject)
Invece di usare stringhe, come userObject passi oggetti di una tua classe che modella in modo più appropriato la voce e contiene le informazioni utili che ti servono.
P.S.: How to Use Trees
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Allora ho visto il codice che mi ha generato Netbeans per fare questa cosa e le voci di menu sono create tutte in questo modo:
Onestamente non capisco a che serve passargli l'oggetto... preso dalla documentazione java:javax.swing.tree.DefaultMutableTreeNode treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Pannello di Controllo");
treeNode1.add(treeNode2);
a cosa serve new BookInfo?//original Tutorial
book = new DefaultMutableTreeNode(new BookInfo
("The Java Tutorial: A Short Course on the Basics",
"tutorial.html"));
category.add(book);
E comunque ammesso che io seguissi questa strada (anche se ancora non ho capito granchè) come faccio poi ad identificare la riga quando l'utente clicca?
Grazie ancora per il tuo aiuto
ciao
Il codice per il popolamento del JTree dovresti (poi) scriverlo tu .... non Netbeans.
Serve ad avere più informazioni di "contesto" sulla voce che hai selezionato.
A modellare l'insieme di 2 informazioni: la stringa da visualizzare e un url che viene usato per visualizzare una pagina.
Se tu facessi banalmente:
book = new DefaultMutableTreeNode("The Java Tutorial: A Short Course on the Basics");
Come faresti ad associare "tutorial.html" a tale voce? Riusciresti, certo, ma con del codice un po' fumoso ......
Sempre direttamente dall'esempio del tutorial:
codice:/** Required by TreeSelectionListener interface. */ public void valueChanged(TreeSelectionEvent e) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (node == null) return; Object nodeInfo = node.getUserObject(); if (node.isLeaf()) { BookInfo book = (BookInfo)nodeInfo; displayURL(book.bookURL); // <------- QUI vedi che usa facilmente l'informazione extra! ...........
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Probabilmente non sarai d'accordo però ti dico lo stesso come ho risolto, magari può servire a qualcun altro
Facendo tree.getLastSelectedPathComponent(); si ottiene esattamente la stringa del menu quindi banalmente basta poi fare uno switch con la stringa piuttosto che con l'indice come facevo io e il problema è risolto
Grazie mille per il tuo aiuto
Ciao
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet