Icone JTree

8 respostas
vivi_grieco

Olá a todos,
gostaria de saber se tem alguma maneira de colocar ícones personalizados em uma JTree???
[]'s

8 Respostas

brlima

“vivi_grieco”:
Olá a todos,
gostaria de saber se tem alguma maneira de colocar ícones personalizados em uma JTree???
[]'s

Tem sim viv… bico :smiley:

É so extender a classe DefaultTreeCellRenderer ( renderer da JTree ) e no método getTreeCellRendererComponent sefinir seu icone pelo metodo setIcon(). :wink:

Certo ?!

Abraços!

vivi_grieco

desculpa minha ignorância… nunca trabalhei com JTree antes… :slight_smile: vc poderia me dar um exemplo de cmo fazer isso??? :]

brlima
"vivi_grieco":
desculpa minha ignorância... nunca trabalhei com JTree antes.. :) vc poderia me dar um exemplo de cmo fazer isso??? :]
/**
 *
 * @author  Administrador
 */
public class MyTreeRenderer extends javax.swing.tree.DefaultTreeCellRenderer {
    
    /** Creates a new instance of MyTreeRenderer */
    public MyTreeRenderer() {
    }
    
    /**
     * Retorna o componente de vizualizacao do node da TreeView.
     */
    public Component getTreeCellRendererComponent(
        JTree tree,
        Object value,
        boolean sel,
        boolean expanded,
        boolean leaf,
        int row,
        boolean hasfocus) {
            
            setIcon({seu icone});
            setFont(new Font("Arial", Font.PLAIN, 10));
            setText(value.toString());
            return this;
            
    };
}
Adaptando na JTree
/**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        JFrame frame = new JFrame("JTree");
        
        MyTreeRenderer renderer = new MyTreeRenderer();
        
        JTree tree = new JTree();
        tree.setCellRenderer(renderer);
        
        frame.getContentPane().add(tree, BorderLayout.CENTER);
        frame.setSize(600,400);
        frame.show();
        
    }

É isso ai Vivi...

Abraços

vivi_grieco

eu fiz isso, só que mesmo assim o ícone não aparece… :frowning:

brlima

Aparece alguma coisa pelo menos ? Tipo a tree com os icones default dela ? Ou fica brando e so aparece o texto ? Vc chegou a ver se ele ta passando pelo renderer que vc criou? Se ao menos passa pelo renderer, vai ver o modo que vc ta referenciando a imagem nao ta achando ela… O que vc ta colocando no setIcon();

Rs… desculpa o tanto de pergunta, mas…

Abraços,

vivi_grieco

oi Bruno,
consegui q aparecesse…
só me tira uma dúvida… se eu coloco setLeafIcon ou setOpenIcon ao invés de setIcon, nao aparece imagem nenhuma… vc sabe pq???
[/code]

vivi_grieco

consegui!!! modeifiquei um pouco o código e deu certo… :slight_smile:
brigadinha!!!

brlima

“vivi_grieco”:
consegui!!! modeifiquei um pouco o código e deu certo… :slight_smile:
brigadinha!!!

Da API

setClosedIcon(Icon newIcon)
          Sets the icon used to represent non-leaf nodes that are not expanded.
   setLeafIcon(Icon newIcon)
          Sets the icon used to represent leaf nodes.
   setOpenIcon(Icon newIcon)
          Sets the icon used to represent non-leaf nodes that are expanded.

O setIcon é herdado do componente default que ele retorna.
QUando vc usa os outros métodos do proprio DefaultTreeCellRenderer, vc aproveita a logica criada para testar se esta aberto, fechado, etc…

Abraços,

Criado 4 de março de 2004
Ultima resposta 5 de mar. de 2004
Respostas 8
Participantes 2