jTree colocar imagem

5 respostas
homisinho

Ola pessoal,
tenho a seguinte necessidade:
listar vários equipamentos, esses equipamentos são de vários tipos e cada tipo de equipamento possui um ícone/imagem especifica, eu estou utilizando o jTree para listar os equipamentos…
mas n encontro opções para alterar a imagem/ícone de cada equipamento q eu coloco na lista.

Eu preciso colocar uma imagem/ícone diferente para cada folha colocada no jtree.
Alguém tem alguma idéia d como fazer isso??

5 Respostas

getAndSet

Olá amigo
isto pode te dar uma ajuda
http://www.devmedia.com.br/visualizacomponente.aspx?comp=2256&site=6
ate mais!!! :wink:

getAndSet

Olá este tutorial parece ter o que vc precisa
http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JTree.html
até :smiley:

ViniGodoy

Você precisa fazer um renderer para sua árvore. Esse renderer abaixo recebe um map de classes associadas a ícones. Quando o nó da árvore é daquela classe, o ícone muda. Se o nó não estiver na lista, o ícone padrão é usado. Adapte para suas necessidades:

class JEditionPanelTreeRenderer extends DefaultTreeCellRenderer {
    private Map<Class>&lt ? &gt, Icon&gt icons = new HashMap<Class>&lt ? &gt, Icon&gt();

    public Icon setIcon(Class&lt ? &gt aClass, Icon icon) {
        return icons.put(aClass, icon);
    }

    public Icon setIcon(Class&lt ? &gt aClass, String fileName) {
        Icon icon = new ImageIcon(getClass().getResource(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) {
        super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);

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

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

        return renderer;
    }
}
Para usar a classe, faça como no exemplo abaixo:
treeRenderer = new JEditionPanelTreeRenderer();
treeRenderer.setIcon(String.class, "stringIcon.png");
treeRenderer.setIcon(Integer.class, "integerIcon.png");
treeRenderer.setIcon(Double.class, "doubleIcon.png");
suaTree.setCellRenderer(treeRenderer);
homisinho

cara a principio tem algo la mesmo…
vou dar uma olhada!!!
c surgir alguma duvida eu posto!!!

Obrigado getandset por responder!!!

homisinho

Obrigado ai pessoal encontrei um topico q mostra bem essa opação…

http://www.guj.com.br/posts/list/22678.java

valeu, to gatinhando no java, mas espero um dia ajudar vcs!!!

Criado 19 de janeiro de 2007
Ultima resposta 19 de jan. de 2007
Respostas 5
Participantes 3