使用ChartComposite绘制图表后,重新选择绘制类型等后,虽然重新new ChartComposite(shell, SWT.NONE, chart, true),但是在界面中并没有重新渲染图表。
原因是先前的chartComposite仍然占据页面位置,使得新图表无法显示,需要将之前创建的控件删除,再通过New ChartComposite创建并设置布局显示即可。
// 删除之前绘制的图表,才能重新绘制
Control[] childControls = chartContainer.getChildren();
for(Control child : childControls) {
if (child instanceof ChartComposite) {
child.dispose();
}
}
// 再绘制新的图表后可以成功渲染
JFreeChart chart = createChart(createDataset(), "Sample");
ChartComposite chartFrame = new ChartComposite(chartContainer, SWT.NONE, chart, true);
FillLayout fillLayout = new FillLayout();
fillLayout.type = SWT.VERTICAL;
chartFrame.setLayout(fillLayout);
chartFrame.setSize(790, 600);
chartFrame.setVisible(true);