[RESOLVIDO] Preciso de ajuda com Interface dinâmica

Estou com dificuldade de criar uma interface dinâmica, o propósito do programa é: um usuário escolhe um arquivo csv, depois clica no botão carregar, depois de carregar a interface gera um menu dropdown com as propriedades, e tem outro menu dropdown que vai gerar graficos. o problema é que eu não sei como mudar o que está dentro do container de uma maneira dinâmica.

O código:

`package codigo;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Interface extends JFrame implements ItemListener, ActionListener {
    
    private JComboBox<String> combo, charts;
    private JButton bt_open, bt_load;
    public Data d = new Data();
    private JPanel panel, graficos;
    private Graficos g;
    private pieChart p;
    
    public Object getObject() {
        return d;
    }
    
    public Interface(String s) {
        super(s);
        Container c = getContentPane();
        
        bt_open = new JButton("Abrir");
        bt_open.addActionListener(this);
        
        bt_load = new JButton("Carregar");
        bt_load.addActionListener(this);

        //Define um JComboBox que será preenchido dinamicamente depois de escolher o .CSV
        combo = new JComboBox<String>();
        combo.addItemListener(this);

        //Define a lista de visualização dos graficos
        charts = new JComboBox<String>();
        charts.addItem("Grafico de Pizza");
        charts.addItem("Grafico de Barra");
        charts.addItem("Tabela");
        charts.addItem("Tabela da Media");

        //Cria um painal para os menus
        panel = new JPanel();
        panel.setLayout(new GridLayout(1, 4));
        panel.add(bt_open);
        panel.add(bt_load);
        panel.add(combo);
        panel.add(charts);

        //Inicia o painel de gráficos
        graficos =  pieChart.createDemoPanel(); //é uma classe em que esse método retorna um objeto JPanel
        

        //Add itens into the window
        c.add(BorderLayout.NORTH, panel);
        c.add(BorderLayout.CENTER, graficos);

        //Defines the layout of the window      
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(800, 600);
        setVisible(true);
        setResizable(false);
        setLocationRelativeTo(null);
    }
    
    public static void main(String[] args) {
        
        new Interface("Protótipo");
        
    }
    
    @Override
    public void itemStateChanged(ItemEvent e) {

        //Combo changed
        if (e.getSource() == combo) {
            if (e.getStateChange() == ItemEvent.SELECTED) {
                String[][] Array;
                Array = d.getPropertyInfo(combo.getSelectedIndex());
                
            }
        }

        //Lista de graficos muda
        if (e.getSource() == charts) {
            //grafico de pizza
            if (charts.getSelectedIndex() == 0) { //se o indice selecionado no menu dropdown for 0, ele tem que mudar o grafico para o de pizza
               graficos = pizza; //apenas um exemplo << é aqui que o conteudo do JPanel grafico não muda, eu estou atribuindo com um objeto JPanel.
            }
            
        }

       
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {

        //Open .csv file
        if (e.getSource() == bt_open) {
            
            File f = null;
            
            JFileChooser c = new JFileChooser();
            FileNameExtensionFilter filter = new FileNameExtensionFilter(
                    "CSV files", "csv");
            c.setFileFilter(filter);
            int returnVal = c.showOpenDialog(this);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                System.out.println("You choose this file: "
                        + c.getSelectedFile().getName());
            }
            
            f = c.getSelectedFile();
            d.setFile(f);
            
        }

        //Carrega propriedades no JCombo dinamicamente
        if (e.getSource() == bt_load) {
            
            d.setProperties();
            
            for (int i = 0; i < d.propertyNum; i++) {
                combo.addItem(d.properties[i]);
            }                        
        }
    }
    
}`

veja se CardLayout pode lhe ajudar.