滚动窗格中的JFreeChart

时间:2009-11-13 14:19:23

标签: java jfreechart jscrollpane

我正在使用jfreechart创建一个大图。这个图表对于屏幕来说太大了,所以我想把它放在一个滚动窗格中。但是,使用滚动条时,每次都会重绘完整的图形,这使得它非常慢。有解决方案吗?

感谢,

巴特

4 个答案:

答案 0 :(得分:1)

自己缓冲。在不在可见面板上的面板中渲染JFreeChart,并将其用作滚动窗格中面板的缓冲区。然后,您可以控制重绘事件以及同步两个面板的频率。

答案 1 :(得分:0)

浏览the source显示ChartPanel构造函数采用可选的布尔参数,该参数指示它在重新绘制时使用图像缓冲区。我猜这会有所帮助。

public ChartPanel(JFreeChart chart, boolean useBuffer);

答案 2 :(得分:0)

使用JFreeChart,无论图表是否嵌入在JScrollPane内,都会在从基础数据集触发事件时重新绘制完整图表。

如果您的图表包含大量数据点并经常更新,则会特别注意这一点。有一些“kludges”你可以尝试让你的UI更具响应性; e.g。

  • 如果底层数据集已更新(例如SeriesDataset),如果当前未显示图表,则可能会延迟触发SeriesChangeEvent
  • 同样,您可以通过每N秒定期触发SeriesChangeEvent而不是每个事件来限制多个更新,明显的缺点是您的UI不那么“实时”。

答案 3 :(得分:0)

我实际上认为问题不是因为面板本身,而是因为在其他地方发生了一些其他事件。我实际上在jscrollpanes中使用ChartPanel而没有这种行为。我的申请工作顺利。

与Adamsky达成一致,我的建议是停止在图表渲染中查找问题,但在数据集实施中。