1) devi crearti una classe es. PersonalNodo che contiene tutti i parametri riferiti al ndo del tuo menu ad albero ( descrizione, chiavi, link, icona ) etc...
come questa per esempio :
codice:
public class NodeInfo {
public String label;
public String url;
public NodeInfo(String label, String url) {
this.label = label;
this.url = url;
}
}
2) fai una classe che aggiunge gli oggetti di tipo nodo ( che crei man mano che recuperi i dati dal database ) al tuo jTree
qualcosa tipo così:
codice:
DefaultMutableTreeNode top = new DefaultMutableTreeNode(new NodeInfo("Messaggi",""));
DefaultMutableTreeNode nodoDaAggiungere = null;
// ciclo che recupera valori da db, e per ognuno fai
nodoDaAggiungere = new DefaultMutableTreeNode(new NodeInfo(nomeNodo,textValue));
top.add(nodoDaAggiungere);
3)fai un'ultima classe per personalizzzare il tuo menu ad albero, tipo questa :
codice:
import java.awt.Component;
import javax.swing.ImageIcon;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
public class PersonalizzaJtree extends DefaultTreeCellRenderer {
private ImageIcon tutorialIcon;
private ImageIcon documentOut;
private ImageIcon documentIn;
private ImageIcon elencoMessaggi;
private ImageIcon error;
private ImageIcon anonima;
public PersonalizzaJtree() {
elencoMessaggi = new javax.swing.ImageIcon(getClass().getResource("/images/document.gif"));
documentOut = new javax.swing.ImageIcon(getClass().getResource("/images/documentOut.gif"));
documentIn = new javax.swing.ImageIcon(getClass().getResource("/images/documentIn.gif"));
error = new javax.swing.ImageIcon(getClass().getResource("/images/error.gif"));
anonima = new javax.swing.ImageIcon(getClass().getResource("/images/anonima.gif"));
}
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
boolean sel,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(
tree,
value,
sel,
expanded,
leaf,
row,
hasFocus);
// PERSONALIZZAZIONE
personalizzaRami(value);
return this;
}
protected void personalizzaRami(Object value) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
NodeInfo nodeInfo = (NodeInfo) (node.getUserObject());
setText(nodeInfo.label);
// se è messaggi fai icona cartella
if( nodeInfo.label.equals( "Messaggi" ) )
setIcon( elencoMessaggi );
// controllo se valido
else if( nodeInfo.label.indexOf("Messaggio non identificato :")>= 0 )
setIcon( error );
// controllo se è risposta anonima
else if( nodeInfo.label.indexOf("Risposta anonima :")>= 0 )
setIcon( anonima );
// messaggio inviato
else if( nodeInfo.label.indexOf("Risposta :")>= 0 )
setIcon( documentIn );
// messaggio ricevuto
else if( nodeInfo.label.indexOf("Messaggio :")>= 0 )
setIcon( documentOut );
}
}
spero di esserti stato di aiuto, per chiarimenti sono qua