Inserir JTree dentro de um JSplitPane [RESOLVIDO]

1 resposta
diegogm

Bom dia galera!

Estou fazendo uma interface que está me deixando meio doido rsrsrs, bom eu já tentei fazer varias coisas e não consegui colocar minha
JTree dentro do primeiro Painel da JSplitPane, não sei se é algo bobo e não estou conseguindo visualizar mais está tenso, pesquisei
varias coisas e ainda não deu certo. Quando eu insiro a JTree ela toma o espaço todo do Frame fazendo assim desaparecer o JSplitPane,
pois no caso eu tenho que ter a JTree na parte de cima e outras informações no segundo Painel na parte de baixo.
Segue uma imagem para melhor ilustrar:

Na Area 1 tem que conter minha JTree e na Area 2 são outras informações que ainda vou desenvolver.

http://imageshack.us/photo/my-images/571/areas.jpg/

Segue também meu código, porém para ele funcionar tem que mudar o diretório que eu estou pegando as informações para popular
a JTree:

package view;

import java.awt.BorderLayout;

import java.io.File;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class Relatorios2 extends JFrame {

    private JSplitPane splitPane;
    private JPanel painel1;
    private JPanel painel2;
    private JScrollPane scroll1;
    private JScrollPane scroll2;
    private JToolBar barBotoes = new JToolBar();
    private JButton btnInformaParametros = new JButton();
    private JButton btnListaRelatorios = new JButton();
    private JButton btnMontaRelatorio = new JButton();
    private JButton btnVoltar = new JButton();
    
    private DefaultMutableTreeNode rootNode;
    private JTree tree;
    private JScrollPane scroll;
    
    public Relatorios2() {
        init();
    }
    
    public void init(){
        
        this.setTitle("Relatórios");
        this.setSize(600, 700);
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setIconImage(new ImageIcon(getClass().getResource("/image/ICONE_TITULO.png")).getImage());
                
        painel1 = new JPanel();
        painel2 = new JPanel();
        scroll1 = new JScrollPane(painel1);
        scroll2 = new JScrollPane(painel2);
        
        splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, scroll1, scroll2);
        splitPane.setOneTouchExpandable(false);
        splitPane.setDividerLocation(400);
        getContentPane().add(splitPane);
        
        barBotoes.setBounds(0, 0, 600, 45);
        barBotoes.setFloatable(false);

        btnInformaParametros.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Relatorios/BT_Informa_Parametros_Selecao.png")));
        btnListaRelatorios.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Relatorios/BT_Lista_Relatorios.png")));
        btnMontaRelatorio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Relatorios/BT_Monta_Relatorio.png")));
        btnVoltar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Relatorios/BT_Voltar.png")));

        barBotoes.add(btnInformaParametros);
        barBotoes.add(btnListaRelatorios);
        barBotoes.add(btnMontaRelatorio);
        barBotoes.add(btnVoltar);
    
        getContentPane().add(barBotoes, BorderLayout.NORTH);
        
        rootNode = new DefaultMutableTreeNode("Relatórios");
        tree = new JTree(rootNode);
        scroll = new JScrollPane(tree);
        scroll.setBounds(50, 0, 600, 325);
        getContentPane().add(scroll, BorderLayout.CENTER);
               
        //Chama o método para popular o JTree
        listAllFiles("C:\\Users\\diego\\Desktop\\Relatorios", rootNode, true);
        
        this.setVisible(true);   
    }
    
    /*
     * @params: String directory - o diretório a trabalhar
     * @params: DefaultMutableTreeNode parent - o node pai
     * @params: Boolean recursive - determina se vai trabalhar com as subpastas, ou só o pai
     */

    public static void listAllFiles(String directory, DefaultMutableTreeNode parent, Boolean recursive) {
        // Lista todos os arquivos no diretório "String directory" no array "children"
        File[] children = new File(directory).listFiles();

        for (int i = 0; i < children.length; i++) {

            // Pega o nome de cada Pasta ou Arquivo
            DefaultMutableTreeNode node = new DefaultMutableTreeNode(children[i].getName());
            // Só mostra o Node se ele é uma pasta e se esta é uma chamada recursiva
            if (children[i].isDirectory() && recursive) {
                parent.add(node); // adiciona como filho
                listAllFiles(children[i].getPath(), node, recursive); // chamada recursiva para trabalhar com o filho
            } else if (!children[i].isDirectory()) { // senão caso não seja um diretório
                parent.add(node); // adiciona como um arquivo
            }
        }
    }
        
    public static void main(String[] args) {
        
        new Relatorios2();
                
    }
}

Agradeço a ajuda de todos! :thumbup:

1 Resposta

diegogm

Pessoal descobri!

Segue o código...

package view;

import java.awt.BorderLayout;

import java.io.File;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class Relatorios extends JFrame {

    private JSplitPane splitPane;
    private JPanel painel1;
    private JPanel painel2;
    private JScrollPane scroll1;
    private JScrollPane scroll2;
    private JToolBar barBotoes = new JToolBar();
    private JButton btnInformaParametros = new JButton();
    private JButton btnListaRelatorios = new JButton();
    private JButton btnMontaRelatorio = new JButton();
    private JButton btnVoltar = new JButton();
    
    private DefaultMutableTreeNode rootNode;
    private JTree tree;
    //private JScrollPane scroll;
    
    public Relatorios() {
        init();
    }
    
    public void init(){
        
        this.setTitle("Relatórios");
        this.setSize(600, 700);
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setIconImage(new ImageIcon(getClass().getResource("/image/ICONE_TITULO.png")).getImage());
         
        barBotoes.add(btnInformaParametros);
        barBotoes.add(btnListaRelatorios);
        barBotoes.add(btnMontaRelatorio);
        barBotoes.add(btnVoltar);
        
        rootNode = new DefaultMutableTreeNode("Relatórios");
        tree = new JTree(rootNode);
        scroll1 = new JScrollPane(tree);
        scroll1.setBounds(50, 0, 600, 325);
                
        painel1 = new JPanel();
        painel1.setLayout(new BorderLayout());
        painel1.add(barBotoes, BorderLayout.NORTH);
        painel1.add(scroll1);
        
        painel2 = new JPanel();
        scroll2 = new JScrollPane(painel2);
        
        barBotoes.setBounds(0, 0, 600, 45);
        barBotoes.setFloatable(false);

        btnInformaParametros.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Relatorios/BT_Informa_Parametros_Selecao.png")));
        btnListaRelatorios.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Relatorios/BT_Lista_Relatorios.png")));
        btnMontaRelatorio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Relatorios/BT_Monta_Relatorio.png")));
        btnVoltar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Relatorios/BT_Voltar.png")));

        splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, painel1, scroll2);
        splitPane.setDividerLocation(400);
        splitPane.setEnabled(false);
        getContentPane().add(splitPane);
               
        //Chama o método para popular o JTree
        listAllFiles("C:\\Users\\diego\\Desktop\\Relatorios", rootNode, true);
        
        this.setVisible(true);   
    }
    
    /*
     * @params: String directory - o diretório a trabalhar
     * @params: DefaultMutableTreeNode parent - o node pai
     * @params: Boolean recursive - determina se vai trabalhar com as subpastas, ou só o pai
     */

    public static void listAllFiles(String directory, DefaultMutableTreeNode parent, Boolean recursive) {
        // Lista todos os arquivos no diretório "String directory" no array "children"
        File[] children = new File(directory).listFiles();

        for (int i = 0; i < children.length; i++) {

            // Pega o nome de cada Pasta ou Arquivo
            DefaultMutableTreeNode node = new DefaultMutableTreeNode(children[i].getName());
            // Só mostra o Node se ele é uma pasta e se esta é uma chamada recursiva
            if (children[i].isDirectory() && recursive) {
                parent.add(node); // adiciona como filho
                listAllFiles(children[i].getPath(), node, recursive); // chamada recursiva para trabalhar com o filho
            } else if (!children[i].isDirectory()) { // senão caso não seja um diretório
                parent.add(node); // adiciona como um arquivo
            }
        }
    }
        
    public static void main(String[] args) {
        
        new Relatorios();
                
    }
}
Criado 17 de outubro de 2012
Ultima resposta 17 de out. de 2012
Respostas 1
Participantes 1