CODE
import javax.swing.JTree;
import javax.swing.JFrame;
import javax.swing.tree.DefaultMutableTreeNode;

import java.awt.Container;

public class Arvore extends JFrame{

    private JTree arvore;

    public Arvore(){

        DefaultMutableTreeNode raiz, no1, no2;

        raiz    = new DefaultMutableTreeNode("Carros");
        no1     = new DefaultMutableTreeNode("Volks");
        no2     = new DefaultMutableTreeNode("Ford");

        raiz.add(no1);
        raiz.add(no2);

        no1.add(new DefaultMutableTreeNode("Gol"));
        no1.add(new DefaultMutableTreeNode("Fusca"));
        no1.add(new DefaultMutableTreeNode("Fox"));

        no2.add(new DefaultMutableTreeNode("Focus"));
        no2.add(new DefaultMutableTreeNode("Ka"));
        no2.add(new DefaultMutableTreeNode("Fiesta"));

        arvore = new JTree(raiz);

        Container cp = getContentPane();
        setSize(400, 300);
        setTitle("Usando JTree");
        cp.add(arvore);

    }

    public static void main(String args[]) {
        new Arvore().show();
    }

}


Fiz de um jeito bem simples para um melhor entendimento !
cool.gif

Você gostou? Comente no fórum!

Comentários:

Thiago Ananias disse:

Bom, se vocês notaram o JTree vem com a seguinte aparencia:
Imagem do IPB

Mas como deixa-la com a seguinte aparência:
Imagem do IPB

Eu mudei o icone para o "+" e o "-" acho que assim fica mais amigável ! vamos ao codigo ver como se altera isso:

Arvore.java
CODE
import javax.swing.JTree;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.ImageIcon;

import javax.swing.tree.DefaultMutableTreeNode;

import java.awt.Container;

public class Arvore extends JFrame{

    private JTree arvore;

    public Arvore(){

        DefaultMutableTreeNode raiz, no1, no2;
        UIManager.put("Tree.expandedIcon",  new ImageIcon("menos.gif"));
        UIManager.put("Tree.collapsedIcon", new ImageIcon("mais.gif"));

        raiz    = new DefaultMutableTreeNode("Carros");
        no1     = new DefaultMutableTreeNode("Volks");
        no2     = new DefaultMutableTreeNode("Ford");

        raiz.add(no1);
        raiz.add(no2);

        no1.add(new DefaultMutableTreeNode("Gol"));
        no1.add(new DefaultMutableTreeNode("Fusca"));
        no1.add(new DefaultMutableTreeNode("Fox"));

        no2.add(new DefaultMutableTreeNode("Focus"));
        no2.add(new DefaultMutableTreeNode("Ka"));
        no2.add(new DefaultMutableTreeNode("Fiesta"));

        arvore = new JTree(raiz);
  
        Container cp = getContentPane();
        setSize(400, 300);
        setTitle("Usando JTree");
        cp.add(arvore);

    }

    public static void main(String args[]) {
        new Arvore().show();
    }

}

Se vocês notarem é o mesmo código que eu postei quando abri este tópico com 4 linhas a mais, vamos a explicação delas:

import javax.swing.UIManager
import javax.swing.ImageIcon
Estas duas servem para importar as Classes "ImageIcon" e a "UIManager" para personalizarmos a JTree

UIManager.put("Tree.expandedIcon", new ImageIcon("menos.gif"));
UIManager.put("Tree.collapsedIcon", new ImageIcon("mais.gif"));
Estas linhas servem para setar a imagem que queremos, sendo que pode ser qualquer uma... é soh especificar o caminho.

É isso pessoal ! cool.gif

Thiago Ananias disse:

Fala pessoal, a pedido de nosso moderador Leandro de Javascript estou postando agora um exemplo de JTree com alguns eventos, o código está comentado mas qualquer dúvida é só postar!
CODE

import java.awt.Dimension;
import java.awt.Color;
import java.awt.Container;
import java.awt.BorderLayout;

import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JTree;

import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;

import javax.swing.tree.DefaultMutableTreeNode; //  --> Responsável pela
criação da estrutura de sua JTree
import javax.swing.tree.DefaultTreeCellRenderer; // --> Personaliza a sua
JTree, por exemplo cores icones de exibicao

import javax.swing.UIManager;

public class Default extends JFrame implements TreeSelectionListener,
TreeExpansionListener {

    JLabel Status = new JLabel("Escolha um node");
    Container cp = getContentPane();
    DefaultMutableTreeNode marcas, volkswagem, fiat, ford, mercedes;
    DefaultTreeCellRenderer Renderer = new DefaultTreeCellRenderer();
    JTree raiz;

    public Default() {

        try {
            
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch(Exception e) {}

        setTitle("JTree com eventos");
        setSize(400, 300);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        centerJFrame(this);

        /* AKI CRIAMOS O ESKELETO DA JTREE */
        //**********************************//
        marcas      = new DefaultMutableTreeNode("Marcas");

        volkswagem  = new DefaultMutableTreeNode("Volksvagem");
        fiat        = new DefaultMutableTreeNode("Fiat");
        ford        = new DefaultMutableTreeNode("Ford");
        mercedes    = new DefaultMutableTreeNode("Mercedes");

        DefaultMutableTreeNode fusca    = new
DefaultMutableTreeNode("Fusca");
        DefaultMutableTreeNode brasilia = new
DefaultMutableTreeNode("Brasilia");
        DefaultMutableTreeNode passat   = new
DefaultMutableTreeNode("Passat");

        volkswagem.add(fusca);
        volkswagem.add(brasilia);
        volkswagem.add(passat);

        marcas.add(volkswagem);
        marcas.add(fiat);
        marcas.add(ford);
        marcas.add(mercedes);
        //**********************************//
        /* AKI CRIAMOS O ESKELETO DA JTREE */

        raiz    = new JTree(marcas);
        raiz.addTreeSelectionListener(this);
        raiz.addTreeExpansionListener(this);

        Renderer.setTextSelectionColor(Color.WHITE);
        Renderer.setBackgroundSelectionColor(Color.DARK_GRAY);
        Renderer.setBackground(Color.BLACK);
        Renderer.setTextNonSelectionColor(Color.BLUE);

        raiz.setCellRenderer(Renderer); //--> Se adicionar este vai ser o
seu personalizado, experimente comentar esta linha

        cp.add(raiz, BorderLayout.CENTER);
        cp.add(Status, "South");

    }

    /* EVENTO RELACIONADO AO MUDAR DE ITENS */
    public void valueChanged(TreeSelectionEvent e) {
        Status.setText(raiz.getLastSelectedPathComponent().toString());
    }
    /* EVENTO RELACIONADO AO MUDAR DE ITENS */

    /* EVENTOS RELACIONADOS AO ABRIR E FECHAR OS NODES */
    public void treeCollapsed(TreeExpansionEvent e) {
        Status.setText("Aba " +
raiz.getLastSelectedPathComponent().toString() + " fechada");
    }

    public void treeExpanded(TreeExpansionEvent e) {
        Status.setText("Aba " +
raiz.getLastSelectedPathComponent().toString() + " aberta");
    }
    /* EVENTOS RELACIONADOS AO ABRIR E FECHAR OS NODES */

    private void centerJFrame (JFrame frame) {

        Dimension paneSize      = frame.getSize();
        Dimension screenSize    = frame.getToolkit().getScreenSize();
        frame.setLocation( (screenSize.width - paneSize.width) / 2,
(screenSize.height - paneSize.height) / 2);

    }

    public static void main(String args[]) {

        new Default().show();

    }

}

cool.gif

Leandro Mercês Xavier disse:

Muito bom Thiago. thumbsup.gif

Os exemplos de código Java utilizando eventos são realmente muito úteis.

Só um detalhe nesse código, que você já deve saber porém não percebeu ao postar quanto ao método show() do Container que está obsoleto, hoje usa-se setVisible(true). ok.gif

Obrigado.

Thiago Ananias disse:

hehehe nem sabia dessa naum... eu pego exemplos daki e dali e vou vendo, todos os livros que peguei usam este método... entaum aprendi assim tongue.gif , mas valew vou fazer do jeito que vc disse agora!

Opa só para constar, uma coisa que percebi, quando tem um botão e vc quer fazer a acao dele vc tem que implementar a Classe "ActionListener" e quando eh a JTree eh a "TreeSelectionListener", e quando vc implementa a Classe e naum coloca as suas ações, por exemplo, a actionPerformed do botão ele fica sublinhado, mostrando que há erro!!! Entaum vc coloca o mouse em cima e vai ver quais são os métodos que vc tem que implementar, entuam mesmo sem conhecer a Classe você sai fazendo!!!

thumbsup.gif

Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).

Mais recentes em JSP e Java

Api's java
Por Daniel Vidal - Lista de api's...
Validador stella
Por Lucasbr - O caelum stella visa suprir as necessidades comumente...
Jsp - expression language
Por Daniel Vidal - Pra quem quiser conhecer um pouco mais sobre as els,...
[java] listeners
Por Daniel Vidal - Listeners - o java possui diversos tipos de listeners...
[swing] adicionando menu ao frame
Por Daniel Vidal - Passo 2...

Ver mais Artigos de JSP e Java.

Ver e retirar outras dúvidas no fórum Webly.

Alguns Direitos Reservados | RSS | O Fórum

Webly Portal e Fóruns - Internet + Humana | Design by ArthurHenrique.com