JLabel zeigt kein Bild an - NullPointerException

Dies ist mein erstes Java-GUI-Programm und eigentlich nur mein zweites Java-Programm. Machen Sie es mir leicht :) Mein Programm ist das Ergebnis einer Menge von googeln und Lesen von Java-Dokumenten. Mein Problem ist, dass ich über ein Sprite-Blatt mit 52 Karten verfüge und versuche, diese Karten mit subImage einzeln in einem Array mit gepufferten Bildern zu speichern und zu Testzwecken alle 52 in einem Fenster anzuzeigen. Die Datei befindet sich im richtigen Verzeichnis. Ich habe dafür gesorgt. Ich glaube, mein Problem liegt in der Verwendung von Jlabels oder einfach in einem dummen Fehler. Wie auch immer, hier ist meine Klasse, die das Sprite Sheet Splitting macht

 package gui;

import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.io.File;


import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class crdimgs extends JPanel {/**
 *
 */
    static final long serialVersionUID = 1L;
    public final int width = 10;
    public final int height = 20;
    public int rows = 13;
    public int cols = 5;

    public BufferedImage image;
    File cardimg = new File("Cards.jpg");
    BufferedImage cards[];

    public void loadsplit(File loadimage){

        try{
            image = ImageIO.read(loadimage);

            } catch(Exception error){
                System.out.print("error");
              }


        cards = new BufferedImage[cols*rows];

    }

    public crdimgs() {
        loadsplit(cardimg);
        setLayout(new GridLayout(rows, cols, 1, 1));

        int x = 0;
        int y = 0;
        int subimg = 0;

        for( int i = 0; i < rows; i++)
        {
            JPanel panel = new JPanel();
            cards[subimg] = new BufferedImage(width, height, 5);
            cards[subimg] = image.getSubimage(x, y, width, height);
            panel.add(new JLabel(new ImageIcon(cards[subimg])));
            add(panel);
            x+=width;
            subimg++;
        }
        y+=height;
        x=0;
        }
    }
}

Und meine Hauptklasse

package gui;
import javax.swing.JFrame;
import java.awt.Color;


public class cards extends JFrame {

    private static final long serialVersionUID = 1L;

    public cards(){

        setTitle("Poker");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(1000, 700);
        setLocationRelativeTo(null);
        this.getContentPane().setBackground(Color.GREEN);
        setVisible(true);
        setResizable(false);
        add(new crdimgs());

    }

public static void main(String[] args){
    new cards();
}
}

Fehler, die ich momentan erhalte, sind:

errorException in thread "main" java.lang.NullPointerException
at gui.crdimgs.<init>(crdimgs.java:53)
at gui.cards.<init>(cards.java:22)
at gui.cards.main(cards.java:28)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage