2012-04-20 44 views
2

我在Vaadin通过JFreeChartWrapper使用JFreeChart的,并有上绘制它的问题。 图表的数据正在运行,可能需要一些时间。 所以我要补充进度指示器来通知图像加载用户(它关闭窗口前)。如何在jFreeChart中完成绘制条形图的事件?

我试图通过ProgressIndicator将临时布局,并用它来解决这个问题,直到接收从图表的一些事件:

final AbsoluteLayout loadLayout = new AbsoluteLayout(); 
loadLayout.setImmediate(true); 
ProgressIndicator progress = new ProgressIndicator(); 
progress.setIndeterminate(true); 
progress.setVisible(true); 
loadLayout.addComponent(progress, "right: 500px; top: 200px;"); 
setContent(loadLayout); 

与此同时,图表在另一个布局还说:

JFreeChart barChart = ChartFactory.createBarChart("Text", "", "", res, PlotOrientation.VERTICAL, true, false, false); 

barChart.addProgressListener(new ChartProgressListener() { 
    @Override 
    public void chartProgress(ChartProgressEvent arg0) { 
     if (arg0.getType() == ChartProgressEvent.DRAWING_FINISHED) { 
      loadLayout.setVisible(false); 
      setContent(layout); 
      layout.setVisible(true); 
     } 
    } 
}); 
JFreeChartWrapper chartWrap = new JFreeChartWrapper(barChart); 
layout.addComponent(chartWrap); 

但我得到的 - 只是进度指示器,我从来没有得到ChartProgressEvent。如果在JFreeChart中被解雇,我不会看到这个事件。

是否有可能解决这个问题,或者我应该更好地利用其他Vaadin插件的图表?

回答

1

收到此类事件,您需要将您的图表添加到一个ChartPanel,作为讨论here

+0

谢谢你的答复!但我不使用Swing,所以如果我将图表添加到ChartPanel,我还是应该图表添加到ChartWrapper在Vaadin显示。而我仍然没有收到活动。 – 2012-04-21 06:30:13