我有一个JScrollPane组件:
scroller = new JScrollPane();
scroller.getViewport().add(bigPanel);
scroller.getViewport().setDoubleBuffered(true);
bigPanel
被绘制成一个bufferedImage,在启动时显示,一切正常。我可以毫无问题地上下滚动。但是,当我放大bigPanel时,它会更新bufferedImage,但只保存JScrollPane中可见的部分(正确的尺寸,只有屏幕外的内容为空白)。
我尝试更新滚动条更改时的缓冲图像,这非常昂贵,导致图像之间呈现白色条纹......
scroller.getVerticalScrollBar().addAdjustmentListener(this);
那么,有没有办法如何在开始时完成组件的绘制,或者编写自己的卷轴更好?
我会尝试使用最少的工作代码,但是要将它隔离开来有点困难。面板由填充的矩形组成。
答案 0 :(得分:2)
一种方法是使用BufferedImage
缩放旧drawImage()
,而getValueIsAdjusting()
保持为真。仅在调整停止后修改BufferedImage
。如果更新非常耗时,那么增量更新可能是值得的。