将ChartPanel添加到jPanel不起作用
我有这个小组:
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") // private void initComponents() { setLayout(new java.awt.BorderLayout()); }// }
将此面板添加到jFrame时,它不会显示图表。
我非常确信问题出在jPanel实现中。
有人可以给我一些指针。 (其他面板到目前为止似乎没有问题)
看起来您正在尝试动态地将新视图组件(即ChartPanel
)添加到现有容器中。 虽然在技术上可以使用add()
, validate()
和repaint()
在运行时添加新组件,但随着应用程序的发展,结果会很差。
或者,在封闭容器上调用pack()
之前添加视图组件,如此处所示,并在新数据到达时更新相应的模型; 监听视图将自行更新。 此处显示了显示多个条形图的相关示例,如下图所示。 如有必要,您始终可以使用setChart()
替换图表面板的封闭图表。 最后,如果不同的图表需要不同的控件,请考虑CardLayout
。