Imagem jtree

1 resposta
progJava

criei o metodo

DefaultMutableTreeNode teste = new DefaultMutableTreeNode(“Teste”);

como faço para mudar o icone padrão desde teste?

ja vi alguns topicos mais não consegui nada. Como fazer? Teriam um ex claro? Obrigado!

1 Resposta

ViniGodoy

Não use o DefaultMutableTreeNode. Fica 200x mais difícil de fazer uma árvore assim. No lugar, faça seu TreeModel:
http://www.guj.com.br/posts/list/37821.java#501820

Para alterar o ícone, você deve definir um TreeRenderer. Esse aqui, permite que você defina um ícone para uma classe específica, que esteja sendo representada na sua Tree:

import java.awt.Component;
import java.util.HashMap;
import java.util.Map;

import javax.swing.Icon;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;

public class JTreeRenderer extends DefaultTreeCellRenderer
{
    private Map<Class>< ? >, Icon> icons = new HashMap<Class>< ? >, Icon>();

    public Icon setIcon(Class< ? > aClass, Icon icon)
    {
        return icons.put(aClass, icon);
    }

    public Icon setIcon(Class< ? > aClass, String fileName)
    {
        Icon icon = ImagePool.getInstance().getIcon(fileName);
        
        if (fileName == null || icon == null)
            return icons.remove(aClass);

        return icons.put(aClass, icon);
    }

    @Override
    public Component getTreeCellRendererComponent(JTree tree, Object value,
            boolean sel, boolean expanded, boolean leaf, int row,
            boolean hasFocus)
    {
        DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) super.getTreeCellRendererComponent(
                tree, value, sel, expanded, leaf, row, hasFocus);

        Icon icon = icons.get(value.getClass());

        if (icon != null)
            renderer.setIcon(icon);

        return renderer;
    }
}
Você usa assim:
JTreeRenderer renderer = new JTreeRenderer();
renderer.setIcon(Livro.class, "c:\livro.ico");
renderer.setIcon(Autores.class, "c:\autor.ico");
suaTree.setRenderer(renderer);
Criado 5 de fevereiro de 2010
Ultima resposta 5 de fev. de 2010
Respostas 1
Participantes 2