Agregar ChartPanel a CardLayout

Tengo una GUI bastante básica organizada con unGridBagLayout. La parte más compleja es la parte inferior donde West está poblado con ScrollPane y la derecha es un panel con unCardLayout que tiene múltiples ChartPanels para que pueda cambiar entre algunos gráficos.

Mi problema surge cuando inicio el programa.

El problema de cambio de tamaño desaparece después de cambiar el tamaño del marco en cualquier dirección. He confirmado que el panel de tabla es el problema porque no agrego esto alCardLayout el panel lo arregla. Creo un espacio en blancoChartPanel y llenarlo más tarde después de tomar alguna acción, pero esto es lo que he hecho:

public class Tester {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Chipmunk: Variant Data Collection Tool");
        JPanel hotspotPanel = new JPanel(new CardLayout());
        ChartPanel subHotspotPanel = new ChartPanel(null);
        JPanel indelHotspotPanel = new JPanel(new BorderLayout());
        JTextPane resultPane = new JTextPane();
        JPanel main = new JPanel(new GridBagLayout());
        JPanel header = new JPanel(new BorderLayout());

        header.setBackground(Color.WHITE);
        frame.setLayout(new BorderLayout());
        frame.setMinimumSize(new Dimension(875, 600));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        frame.setLocation(dim.width/2-frame.getSize().width/2, dim.height/2-frame.getSize().height/2);
        resultPane.setOpaque(false);
        resultPane.setEditable(false);
        GridBagConstraints c = new GridBagConstraints();
        DocumentFilter filter = new UppercaseDocumentFilter();
        JTextField geneField = new JTextField(10);
        ((AbstractDocument) geneField.getDocument()).setDocumentFilter(filter);
        geneField.setMinimumSize(geneField.getPreferredSize());
        JTextField proEffField = new JTextField(10);
        proEffField.setMinimumSize(proEffField.getPreferredSize());
        String[] mutTypes = { "missense", "nonsense", "frameshift", "nonframeshift"};
        JComboBox<String> mutTypeComboBox = new JComboBox<String>(mutTypes);
        JButton saveResultsButton = new JButton("Save to TSV");
        JPanel glass = (JPanel) frame.getGlassPane();
        JButton clearButton = new JButton("Clear");
        JButton cosmicButton = new JButton("To COSMIC");
        JButton dataButton = new JButton("Show Data");
        dataButton.setEnabled(false);
        JButton goButton = new JButton("GO");

        c.weightx = 1.0;c.gridx = 0;c.gridy = 0;c.anchor = GridBagConstraints.EAST;c.ipadx=5;c.ipady=5;
        main.add(new JLabel("Gene: "), c);
        c.gridx = 1;c.gridy = 0;c.anchor = GridBagConstraints.WEST;
        main.add(geneField, c);
        c.gridx = 0;c.gridy = 1;c.anchor = GridBagConstraints.EAST;
        main.add(new JLabel("Protein Effect: "), c);
        c.gridx = 1;c.gridy = 1;c.anchor = GridBagConstraints.WEST;
        main.add(proEffField, c);
        c.gridx =0;c.gridy = 2;c.anchor = GridBagConstraints.EAST;
        main.add(new JLabel("Mutation Type: "), c);
        c.gridx =1;c.gridy = 2;c.anchor = GridBagConstraints.WEST;
        main.add(mutTypeComboBox, c);
        c.gridx =0;c.gridy = 3;c.anchor = GridBagConstraints.WEST;
        main.add(saveResultsButton, c);
        c.gridx = 0;c.gridy = 3;c.anchor = GridBagConstraints.EAST;
        main.add(goButton, c);
        c.gridx = 1;c.gridy = 3;c.anchor = GridBagConstraints.WEST;
        main.add(clearButton,c);
        c.gridx = 0;c.gridy = 3;c.anchor = GridBagConstraints.CENTER;
        main.add(dataButton,c);
        c.gridx = 1;c.gridy = 3;c.anchor = GridBagConstraints.EAST;
        main.add(cosmicButton,c);
        c.gridx = 0; c.gridy =4;c.gridwidth =1; c.weightx = 1.0;c.weighty = 1.0; c.fill = GridBagConstraints.BOTH;
        JScrollPane scrollPane = new JScrollPane(resultPane);
        main.add(scrollPane, c);
        c.gridx = 1; c.gridy =4;c.gridwidth = 1; c.weightx = 1.0;c.weighty = 1.0; c.fill = GridBagConstraints.BOTH;

        hotspotPanel.add(subHotspotPanel, "SUBPANEL");
        hotspotPanel.add(indelHotspotPanel, "INDELPANEL");
        hotspotPanel.add(new JPanel(), "BLANK");
        main.add(hotspotPanel, c);
        frame.add(header, BorderLayout.NORTH);
        frame.add(main, BorderLayout.CENTER);

        frame.pack();
        frame.setVisible(true);
    }

}

Respuestas a la pregunta(1)

Su respuesta a la pregunta