用于慢速Swing组件的'image stretch'代理?

时间:2011-09-08 08:13:15

标签: java performance swing jfreechart redraw

我有一个使用JFreeChart显示绘图的应用程序。碰巧的是,这些情节很大,而JFreeChart的速度并不快,导致重绘次数非常糟糕,特别是在调整情节大小时。

我所追求的是一种在调整大小时拉伸代表情节的图像的方法(有点像iPhone会在再次启动时显示已停止的应用程序的屏幕截图),并且只有在用户拥有后才执行完全重绘释放鼠标(即一旦最终的大小已知)。

图表的交互功能应保持不变(显然不调整大小时)。

是否有针对此的通用解决方案/ Swing包装器? (没有理由认为它应该是特定于JFreeChart的。)

干杯

1 个答案:

答案 0 :(得分:3)

没有具体的答案,只是一种可能的策略

  • 开始调整大小时,将绘图绘制成BufferedImage并显示并调整该图像而不是绘图
  • 停止调整大小删除图像并再次显示情节

在JDK 7中,您可以使用JLayer进行图像/操作。

修改

或者(对于JLayer),您可以使用CardLayout:在调整大小时显示一张带有图像的卡,而在不调整大小时显示带有图的另一张卡。 SwingX ImagePainter可以在调整大小期间进行图像缩放