java - 慢速 Swing 组件的“图像拉伸(stretch)”代理?

标签 java performance swing jfreechart redraw

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

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

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

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

干杯

最佳答案

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

  • 开始调整大小时,将绘图绘制到 BufferedImage 中,并显示该图像(而不是绘图)并调整其大小
  • 停止调整大小时,删除图像并再次显示绘图

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

编辑

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

关于java - 慢速 Swing 组件的“图像拉伸(stretch)”代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7345027/

相关文章:

java - 使用 Java/Android 测量下载速度

performance - 破解 JVM 以避免不必要的边界检查和强制转换

java - 将单词的字符添加到 JButtons 中

java - 结合 JXTable 和 RXTable

java - Eclipse 上运行配置中的项目选择为空

Java:将文件模式转换为正则表达式模式

Java SQL 插入具有自动增量 id 的行

c++ - 为什么这个 C 代码比这个 C++ 代码快?获取文件中的最大行

php - 解析简单明确定义的字符串的最有效方法?

java - 如何在 JPanel 和 JFrame 的 contentPane 之间添加间距?