Java - Arboles en Java 2

 
Vista:

Arboles en Java 2

Publicado por Pablo Nazareno (2 intervenciones) el 25/04/2006 14:46:24
Hice como me dijeron cuando pregunte antes, pero ahora mi problema es que no puedo mostrar en el árbol el nodo que esta seleccionado. Este es un fragmento del código que hice:

import java.awt.Color;
import java.awt.Component;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.tree.*;
public class TreeCellRender extends DefaultTreeCellRenderer{

public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasfocus) {
JLabel text = new JLabel();
Nodo nodoaux = (Nodo)((DefaultMutableTreeNode)value).getUserObject();
String tmp = nodoaux.getID();
text.setText(tmp);

if (tmp.equals("Raiz")){
if (expanded){
text.setIcon(new ImageIcon("lib/CarpetaO.png"));
}
else{
text.setIcon(new ImageIcon("lib/CarpetaC.png"));
}
}
if (tmp.equals("Cliente")){
if (expanded){
text.setIcon(new ImageIcon("lib/CarpetaO.png"));
}
else{
text.setIcon(new ImageIcon("lib/CarpetaC.png"));
}
}
if (tmp.equals("Aplicacion")){
if (expanded){
text.setIcon(new ImageIcon("lib/CarpetaO.png"));
}
else{
text.setIcon(new ImageIcon("lib/CarpetaC.png"));
}
}
this.backgroundSelectionColor = Color.blue;
this.backgroundNonSelectionColor = Color.red;
text.setBackground(Color.red);
return text;
}
}

La clase Nodo la cree yo y ahí tengo los datos que necesito guardar.
Alguien me puede decir que esta mal. O mandarme algún ejemplo que funcione por mail.
Mechas Gracias.

---------------------------------mensaje original -------------------------------

Les agradecería si me pueden decir como hacer que un árbol hecho con java tenga la imagen de las hojas diferentes según algún atributo de esta.
Intente usar la clase DefaultTreeCellRender pero me cambia la imagen de todos los nodos hojas.
Yo necesitaría que según la rama de donde venga tenga una imagen distinta.
Gracias.

---------------------------------respuesta anterior ---------------------------------------

Hola:

Hereda de DefaultTreeCellRender y redefine el método getTreeCellRendererComponent().

A este método le pasan absolutamente toda la información del nodo (valor ,si es hoja o no, si está seleccionado, etc, etc). Construyete ahí un JLabel con icono y texto y lo devuelves. Este JLabel es el que se verá en el árbol.

DefaultTreeCellRenderer hereda de JLabel, así que puedes simplemente usar métodos this.setIcon() y this.setText() y devolver luego return this.

Se bueno.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder