将ChartPanel添加到jPanel不起作用

时间:2016-08-24 08:20:05

标签: java swing jpanel jfreechart

我有这个小组:

public class StripchartPanel extends javax.swing.JPanel {
public StripchartPanel() {
    XYSeries series = new XYSeries("XYGraph");
    series.add(1, 1);
    series.add(1, 2);
    series.add(2, 1);
    series.add(3, 9);
    series.add(4, 10);

// Add the series to your data set
    XYSeriesCollection dataset = new XYSeriesCollection();
    dataset.addSeries(series);

// Generate the graph
    JFreeChart chart = ChartFactory.createXYLineChart(
            "XY Chart", // Title
            "x-axis", // x-axis Label
            "y-axis", // y-axis Label
            dataset, // Dataset
            PlotOrientation.VERTICAL, // Plot Orientation
            true, // Show Legend
            true, // Use tooltips
            false // Configure chart to generate URLs?
    );
    ChartPanel CP = new ChartPanel(chart);
    this.add(CP, BorderLayout.CENTER);
    this.validate();
    initComponents();

}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    setLayout(new java.awt.BorderLayout());
}// </editor-fold>                        

}

将此面板添加到jFrame时,它不会显示图表。

我非常确信问题出在jPanel实现中。

有人可以给我一些指针。 (其他面板到目前为止似乎没有问题)

1 个答案:

答案 0 :(得分:2)

您似乎正在尝试动态地向现有容器添加新的视图组件,即ChartPanel。虽然在技术上possible使用add()validate()repaint()在运行时添加新组件,但随着应用程序的发展,结果会很差。

或者,在在封闭容器上调用pack()之前添加视图组件,如图here所示,并在新数据到达时更新相应的模型;监听视图将自行更新。显示多个条形图的相关示例显示为here,如下图所示。如有必要,您始终可以使用setChart()替换图表面板的封闭图表。最后,如果不同的图表需要不同的控件,请考虑CardLayout

image