java - BufferedImages 数组错误?

标签 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 创建任何类型的数组/集合。为什么是这样?如果不可能,是否有另一种方法来存储图像集合并显示它们而不会出现这些错误?

最佳答案

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

也就是说,我们看到了这个:

BufferedImage[] bImg; 

但不是这个:

BufferedImage[] bImg = new     BufferedImage[MAX_IMG_COUNT]; 

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

关于java - BufferedImages 数组错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558691/

相关文章:

java - 扫描仪仅搜索 .txt 文件的第一行

java - 在自定义警报对话框中设置自定义文本 (Android-Studio)

c - 寻找最小的整数

mysql - 从mysql获取多个图像并显示在表格上

java - 当另一个事务删除惰性子级时的 JPA-Hibernate 行为

java - 检测是否在HiDPI显示屏上运行

c++ - 通过 Boost ASIO 服务器发送缓冲区 - 发送错误数据

arrays - VueJS : observer object instead of Array

c# - C# 中的图像捕获

java - 使用 Java/Scala 创建文档的格式化 PNG 'pages'