我正在使用jfreechart创建一个大图。这个图表对于屏幕来说太大了,所以我想把它放在一个滚动窗格中。但是,使用滚动条时,每次都会重绘完整的图形,这使得它非常慢。有解决方案吗?
感谢,
巴特
答案 0 :(得分:1)
自己缓冲。在不在可见面板上的面板中渲染JFreeChart,并将其用作滚动窗格中面板的缓冲区。然后,您可以控制重绘事件以及同步两个面板的频率。
答案 1 :(得分:0)
浏览the source显示ChartPanel构造函数采用可选的布尔参数,该参数指示它在重新绘制时使用图像缓冲区。我猜这会有所帮助。
public ChartPanel(JFreeChart chart, boolean useBuffer);
答案 2 :(得分:0)
使用JFreeChart,无论图表是否嵌入在JScrollPane
内,都会在从基础数据集触发事件时重新绘制完整图表。
如果您的图表包含大量数据点并经常更新,则会特别注意这一点。有一些“kludges”你可以尝试让你的UI更具响应性; e.g。
SeriesDataset
),如果当前未显示图表,则可能会延迟触发SeriesChangeEvent
。SeriesChangeEvent
而不是每个事件来限制多个更新,明显的缺点是您的UI不那么“实时”。答案 3 :(得分:0)
我实际上认为问题不是因为面板本身,而是因为在其他地方发生了一些其他事件。我实际上在jscrollpanes中使用ChartPanel而没有这种行为。我的申请工作顺利。
与Adamsky达成一致,我的建议是停止在图表渲染中查找问题,但在数据集实施中。