监听的滚动条的事件,
   public void adjustmentValueChanged(AdjustmentEvent arg0) {}如何能够做到,延迟重画?看了一个 
Java性能优化技巧集锦(转) 二 
3.5 延迟重画操作 根本就不明白!!大家有什么办法提高滚动时候的性能!!!!!

解决方案 »

  1.   

    JAI里提供了一个类 ScrollingImagePanel 包装了一个图像显示组件,提供了图像分块显示功能,你可以研究一下它的源代码。另外,通过设置JAI中的TileCache也可以使其达到平滑滚动的效果。我最近也在研究大图像的存储与显示,特别是每通道16或32位的高动态范围的图像,希望和有这方面处理经验的朋友一起讨论。
      

  2.   

    因为我们的项目里必须对8/Channel,16/Channel,32bit/Channel的图像作处理。
    所以我写了一点测试代码,自己在内存中生成了一块8000*4000,32bit/Channel的图像(DataBuffer.TYPE_FLOAT),生成时占用了大概300m内存,然后使用Graphic2D.drawRenderedImage()在面板上把它画出来,结果资源管理器中内存显示又多出300m,而且使用滚动条拖动不平滑。现在遇到的问题就是占用内存过多和图像在视口中拖动不平滑,需要几秒钟的时间处理。但是我发现生成8bit/Channel(DataBuffer.TYPE_BYTE)的大图像绘出后拖动还是很平滑的,所以想对32bit/Channel的图像进行处理后转换成8/Channel的图像再绘制到屏幕上显示,但是这样又会多占一块内存。目前还没有想到好的解决办法。我看了SUN提供的JAI的文档,还是没弄明白TileCache怎么用。我的msn:[email protected]