Icone JTree

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

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

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!

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

[code]/**
*

  • @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;
      

    };
    }
    [/code]

Adaptando na JTree

[code] /**
* @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();
    
}

[/code]

É isso ai Vivi…

Abraços

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

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,

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]

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

[quote=“vivi_grieco”]consegui!!! modeifiquei um pouco o código e deu certo… :slight_smile:
brigadinha!!![/quote]

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,