JComboBox como escolha de parâmetros em uma JTree

Bom dia galera!

Bom estou precisando de uma ajuda muito grande de vcs, não sei mais o que pesquisar e como fazer isso que irei explicar.
Estou fazendo uma interface de Relatórios, nesta interface estou usando um JSplitPane, na primeira parte do Split eu estou
com uma JTree na qual eu busco um diretório de relatórios montando a hierarquia, para cada relatório do sistema eu tenho
filtros que variam de acordo com os relatórios, tem relatórios que te 1 filtro, tem relatórios que tem 3 e relatórios que tem
no máximo 5 filtros que no caso são o mesmo para todos os relatórios no total são 7 os filtros, para eu selecionar um filtro
tenho que clicar num JCheckBox para usar aquele filtro, se eu não quiser usar o filtro eu apenas não clico no CheckBox, segue
uma imagem ilustrando o que eu estou falando, é uma imagem do sistema antigo que estou passando para JAVA, lembrando
que os relatórios quando eu clico numa pasta eles aparecem no Split de baixo, na minha atual interface eles aparecem como
filhos da pasta da minha Tree e os filtros só aparecem quando eu seleciono um relatório e clico num botão.

Segue as imagens:

Está é a imagem que eu seleciono um relatório:

Está é a imagem quando eu clico no botão e os filtros aparecem:

Como vcs podem ver na segunda imagem que tem um checkbox selecionado, aquele é o único filtro a ser usado os outros que não
estão marcados não uso.

Preciso que quando eu selecionar um relatório apareça os seus devidos filtros na parte de baixo no segundo Split como disse anteriormente
tem relatório que tem uma quantidade variada de filtros que no caso são JComboBox na hora que eles aparecerem preciso renderizá-los para
que eles estejam alinhados um abaixo do outro.

Não sei se ficou claro o que eu expliquei mais é assim que vai funcionar e eu estou meio perdido e tenho que entregar isso logo na minha empresa.
Conto com a ajuda de vcs nesse problema.

Segue o código que eu fiz até o momento:

[code]package view;

import java.awt.BorderLayout;

import java.io.File;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
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;

private JLabel lblClassifLotesEst = new JLabel();   

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();
    painel2.setLayout(new BorderLayout());
    painel2.add(lblClassifLotesEst, BorderLayout.CENTER);
    lblClassifLotesEst.setBorder(BorderFactory.createTitledBorder("Classificação de Lotes Por Estação"));
    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();
            
}

}[/code]

Galera se alguém pegar o código pra testar tem que mudar o caminho do diretório de relatórios que coloquei ai.

Por favor me ajudem nessa doidera. Obrigado mesmo a todos!!! :thumbup: