需求是这样的:给定一个目录,把该目录下所有的图片通过缩略图的形式展示在一个JPanel上我用了一个 JScrollPanel, 上面放了个 JPanel用来画缩略图缩略图通过: Image temp = ImageIO.read(new File("imagePath")).getScaledInstance(80,60,0) 得到之后把所有缩略图放到一个 ArrayList 里,逐个用 drawImage() 画到JPanel上这样做在图片数量少得时候没问题,但是图片一多就会造成 out of memory.
但是如果不放在内存里,每次要画的时候直接读文件,那么刷新的时候速度又不能忍受。有经验的高人给点主意啊~~` 不胜感谢。

解决方案 »

  1.   

    可以通过两个线程分别来实现读取文件和显示所略图,每显示完一个缩略图后就把文件从内存中remove掉
      

  2.   

    neucloud() 
    可以通过两个线程分别来实现读取文件和显示所略图,每显示完一个缩略图后就把文件从内存中remove掉
    ----------------------------------------------------------------------------------如果这样的话, Scroller 一滚动, JPanel.repaint() 
    的时候内存里是没有图片对象的,那是不是又要新开两个线程,重新把所有的图都读一遍然后显示一遍呢?
      

  3.   

    回:如果这样的话, Scroller 一滚动, JPanel.repaint() 
    没必要repaint整个JPanel,刷新在屏幕上的显示区域就行了。计算一下当前屏幕显示那几幅图。