类似资源管理器,将某个文件夹下的所有图片通过略缩图的形式画到JPanel上。其中每一个略缩图都是一个继承自JComponent的类。如果一次性全部add到JPanel上,类的引用过多,内存会溢出。想过监听JPanel的滚动条,动态加载。但是类的引用始终都会多到让内存溢出吧?菜鸟跪求解决思路

解决方案 »

  1.   

    监听滚动条,把之前的要remove掉,然后在加载,这样内存处于可控状态。避免溢出
      

  2.   

    在eclipse中  打开菜单window-preferences-Installed JRES-EDIT -Default VM Arguments 填写:
    -Xms256m -Xmx1024m
    这是OutOfMemory错误,一般像楼上所说,你应该设置变量首为null,如果是控件要先remove掉
      

  3.   

    在eclipse中  打开菜单window-preferences-Installed JRES-EDIT -Default VM Arguments 填写:
    -Xms256m -Xmx1024m
    这是OutOfMemory错误,一般像楼上所说,你应该设置变量首为null,如果是控件要先remove掉
      

  4.   

    在eclipse中  打开菜单window-preferences-Installed JRES-EDIT -Default VM Arguments 填写:
    -Xms256m -Xmx1024m
    这是OutOfMemory错误,一般像楼上所说,你应该设置变量首为null,如果是控件要先remove掉
      

  5.   

    如果把前面add了的略缩图remove掉,JPanel里的内容没有增加,那滚动条就不会有向下滚动的效果了吧?
      

  6.   

    附上错误信息:java.lang.OutOfMemoryError: Java heap space
      

  7.   

    生成一张集合所有缩略图的大图,把缩略图实例全部释放,或者根本没有什么缩略图实例,直接生成一张图。
    记录下 大图上 针对每个图片icon的位置信息, 形成与 实体文件的 映射关系。
    之后的操作:
    事件 <-> 位图操作 <-> 文件
      

  8.   

    看看google的图片搜索功能 我看你要的效果就是那样的,当滚动条下拉时 图片再加载到页面上显示
      

  9.   

    这个貌似不应该会出现吧,先保证你的eclipse jvm参数适当,然后参考一下jdk里的例子
      

  10.   

    得到某一个文件夹下所以图片的路径,保存到String数组s。Thumbnail(继承自JComponent)根据路径s[i]将图片画出,然后add到panel上。以下是部分代码。
                    for(int i=0; i<s.length; i++){
                        panel.add(new Thumbnail(s, i));
                    }
                    panel.updateUI();以下是Thumbnail的paintComponent方法:
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            if (img==null) {
                g.setColor(Color.BLACK);
                g.fillRect(0,0,getWidth(),getHeight());
            }
            else {
                Graphics2D g2d = (Graphics2D)g;
                g2d.drawImage(img, af, this);
            }
        }//paintComponent
      

  11.   

    把原来的remove掉,JPanel里的内容没有增加,那就没有向下滚动的效果了吧?
      

  12.   

    使用 JScrollBar 而不是 JScrollPane