您也许已经注意到了,在使用 JDK 版本 1.3.0 的时候,Swing 应用程序中的滚动和缩放操作有时看起来有些抖动,或者在显示最终图像之前,临时图像看起来似乎在闪烁。使用版本 1.2.2 可以使相同的应用程序实现平滑的滚动。本文的技巧解释了为什么会这样。
您也许已经注意到了,在使用 JDK 版本 1.3.0 的时候,Swing 应用程序中的滚动和缩放操作有时看起来有些抖动,或者在显示最终图像之前,临时图像看起来似乎在闪烁。使用版本 1.2.2 可以使相同的应用程序实现平滑的滚动。本文的技巧解释了为什么会这样。
Swing JViewport 类定义了在任一时刻图像的可见部分。(请想象通过一个开口观察图像;而滚动改变了观察开口。) JScrollPane 类将滚动条连接至视口。当滚动图像时,视口的可见范围发生了变化。在屏幕上显示新图像的方式取决于所采用的滚动模式。由于从 1.2.2 到 1.3.0 已经改变了缺省的滚动方式,所以如果不显式设置滚动模式,那么同一个应用程序在两种版本上可能有不同的行为。使用 setScrollMode 设置模式,如下所示:
setScrollMode(JViewport.SIMPLE_SCROLL_MODE) |
setScrollMode() 可以使用以下三个值,它们是:
在 1.2.2 中只有显式设置时才使用位块传输,但是由于已经证明它能显著提高性能,所以在 1.3.0 中位块传输成了缺省的滚动模式。使用位块传输模式的效果之一是,在滚动或缩放时在屏幕上可以看到一些绘图操作的中间过程。对于复杂的图像这一点通常更加明显。如果不能接受这一点,您可以设置成另外一种模式,但是性能方面几乎肯定会受到影响。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/374079/viewspace-130247/ ,如需转载,请注明出处,否则将追究法律责任。