【问题标题】:How to get event on finish drawing bar chart in jFreeChart?如何在 jFreeChart 中获取完成绘制条形图的事件?
【发布时间】:2012-04-21 00:41:19
【问题描述】:

我在 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 插件来制作图表?

【问题讨论】:

    标签: java jfreechart vaadin


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复!但是我不使用 Swing,所以如果我将图表添加到 ChartPanel,我仍然应该将图表添加到 ChartWrapper 以在 Vaadin 中显示。而且我仍然没有收到事件。
    猜你喜欢
    • 2013-06-16
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2014-10-05
    • 1970-01-01
    • 2016-07-06
    相关资源
    最近更新 更多