BufferedImages数组错误?

时间:2012-03-04 20:51:15

标签: java arrays image list bufferedimage

public class DisplayImage extends Panel {

BufferedImage bImg;
static int i = 0; 

public ShowImage() {
    try {
        bImg = ImageIO.read(new File("C:/DesktopPics/pic.jpg"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public void paint(Graphics g) {
    g.drawImage(bImg, 0, 0, null);
}

public static void main(String[] args) {

    JFrame frame = new JFrame();
    Panel panel = new DisplayImage();
    frame.getContentPane().add(panel);
    frame.setSize(500, 500);
    frame.setVisible(true);
}

}

好的,所以我得到了上面的代码,坦率地完美地运行,但是,我的意图是将一堆图片实际放入BufferedImage数组中,然后逐个绘制它们。如果我创建多个BufferedImages,这很有用,但是当我这样做时:

BufferedImage[] bImg; 

然后像这样初始化它

bImg[0] = ImageIO.read(new File("C:/DesktopPics/pic.jpg")); 

它给了我这个错误:

Exception in thread "main" java.lang.NullPointerException
at ShowImage.<init>(ShowImage.java:17)
at ShowImage.main(ShowImage.java:31)

我尝试使用ArrayList,List,甚至是HashSet,但它不会让我为BufferedImage创建任何类型的Array / Collection。为什么是这样?如果不可能,还有另一种方法来存储图像集并显示它们而不会出现这些错误吗?

2 个答案:

答案 0 :(得分:4)

您是否创建了bImg阵列?它看起来并不像你所做的那样,因为我们只看到变量的声明而不是它的初始化。

即,我们看到了:

BufferedImage[] bImg; 

但不是这样:

BufferedImage[] bImg = new     BufferedImage[MAX_IMG_COUNT]; 

另外,为什么要尝试将Swing与AWT组件混合使用。这通常不是一个好主意,除非你有这样做的强烈迹象(我在这篇文章中还没有看到),并且真正知道你正在做什么以避免常见的陷阱。

答案 1 :(得分:3)

Arrays要求您首先实例化数组:

int x = 5;
BufferedImage[] bImg = new BufferedImage[x];
bImg[0] = ...