2

我在 Vaadin 中通过 JFreeChartWrapper 使用 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 插件来制作图表?

4

1 回答 1

1

要接收此类事件,您需要将图表添加到 aChartPanel中,如此所述。

于 2012-04-20T16:41:19.233 回答