使用JList显示图像查看器的图像

时间:2014-04-22 16:32:27

标签: java image swing compression jlist

我正在创建一个图像查看应用程序,我在jlist中显示所选文件夹中的所有图像。因此,它们将显示在一行中,然后当用户浏览列表时,图像将显示在同一窗口中的另一个jlabel上。问题是它适用于小图像,但对于壁纸和其他具有大图像的文件夹,我得到了Java堆异常。解决这个问题的最佳方法是什么?

public void loadImages(File directory) throws IOException, URISyntaxException {


        File[] imageFiles = directory.listFiles();
        model.removeAllElements();
        for (int ii=0; ii<imageFiles.length; ii++) {
            model.addElement(ImageIO.read(imageFiles[ii])); 
        }


    }

1 个答案:

答案 0 :(得分:1)

一种方法:

  1. 当您将每个图像读入ListModel时,您需要创建图像的“缩略图版本”。这将最小化在JList中显示图像所需的内存量。

  2. 当您选择要在标签中显示的图像时,您需要重新读取图像,以便以原始尺寸显示图像。