Добавление ChartPanel в CardLayout

У меня есть довольно простой графический интерфейс, организованный сGridBagLayout, Самая сложная часть - это нижняя часть, где Запад заполняется ScrollPane, а справа - панель сCardLayout это имеет несколько ChartPanels, поэтому я могу переключаться между несколькими графиками.

Моя проблема возникает, когда я запускаю программу.

Проблема с изменением размера исчезает после того, как я изменю размер кадра в любом направлении. Я подтвердил, что проблема заключается в диаграмме, потому что я не добавил ее вCardLayout панель исправляет это. Я создаю бланкChartPanel и заполнить его позже после того, как будут предприняты некоторые действия, но это то, что я сделал:

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);
    }

}

Ответы на вопрос(1)

Ваш ответ на вопрос