Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPanel和JFreeChart错误_Java - Fatal编程技术网

Java JPanel和JFreeChart错误

Java JPanel和JFreeChart错误,java,Java,我试图将JFreeChart包含到新的JPanel中,然后在单击按钮时用新的JPanel刷新JFrame。不幸的是,我认为我的程序中有一个错误,因为当我单击按钮时,它只刷新旧的JFrame,红色文本以黑色更新 这是我的密码: 我的LRTChart类,它应该生成图表 class LRTChart { JButton returnButton = new JButton(""); public void chartCreator(double[] values, int[] day

我试图将JFreeChart包含到新的JPanel中,然后在单击按钮时用新的JPanel刷新JFrame。不幸的是,我认为我的程序中有一个错误,因为当我单击按钮时,它只刷新旧的JFrame,红色文本以黑色更新

这是我的密码:

我的LRTChart类,它应该生成图表

class LRTChart
{
    JButton returnButton = new JButton("");

    public void chartCreator(double[] values, int[] days)
    {
         JPanel chart = chartPanel(values, days);
         JPanel  chartPanel= new JPanel();

         Font buttonFont = new Font("Impact", Font.PLAIN, 15);
         returnButton.setFont(buttonFont);
         Box subMenu = Box.createVerticalBox();
         subMenu.add(returnButton);
         chartPanel.add(chart, BorderLayout.CENTER);
         chartPanel.add(subMenu, BorderLayout.SOUTH);

         MainWindow.setContentPane(chartPanel);
    }

    private XYDataset createDataset(double[] values, int[] days)
    {
        XYSeriesCollection dataset = new XYSeriesCollection();
        XYSeries generalAxis = new XYSeries("x");
        for(int i = 0; i < values.length; i++)
        {
            generalAxis.add(days[i],values[i]);
        }
        dataset.addSeries(generalAxis);
        return dataset;
    }

    private JPanel chartPanel(double[] values, int[] days)
    {
    String chartTitle = "xxx";
        String xAxisLabel = "x";
        String yAxisLabel = "y";

        XYDataset dataset = createDataset(values, days);
        JFreeChart chart = ChartFactory.createXYLineChart(chartTitle, xAxisLabel, yAxisLabel, dataset);
        return new ChartPanel(chart);
    }
}

我感谢所有帮助我的人

您可以通过调用SwingUtilities.updateComponentTreeUI(contentPane)刷新视图;这不是问题所在,当我单击按钮时,它只会刷新当前的JPanel,而不是用图表显示新的JPanel
public static void setContentPane(JPanel panel)
{
    JPanel contentPane = (JPanel) window.getContentPane();
    contentPane.removeAll();
    contentPane.add(panel);
    contentPane.revalidate(); 
    contentPane.repaint();
}