Cześć, uczę się programować w Java i mam pewien problem, stworzyłem sobie klasę Image, która rozszerza JPanel i służy mi do wczytywania obrazów do programu:

package domowka;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

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

public class Image extends JPanel{
    private BufferedImage image;

    public Image(String fileName) throws IOException {

        File imageFile = new File("img/"+fileName);
            try {
                image = ImageIO.read(imageFile);
            } catch (IOException e) {
                System.err.println("Blad odczytu obrazka");
                e.printStackTrace();
            }

        Dimension dimension = new Dimension(image.getWidth(), image.getHeight());
        setPreferredSize(dimension);
    }

    @Override
    public void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(image, 0, 0, this);
        //g2d.drawImage(image, 0, 100, 344,400, this);
    }
}

Teraz korzystając z tej klasy wywołuję ją w innej klasie, w której ładuje sobie obrazki z listy w funkcji initComponents(). Dodaję przycisk i słuchacza, poprzez wciśnięcie zmieniam aktualny obrazek do wyświetlenia, ale niestety initComponents mi tego nie wczytuje tzn. jest taki obrazek, który był na samym początku - co robię źle i jak to naprawić

package domowka;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

public class JFrameGameWindow extends JFrame implements ActionListener{

    //JPanel panel = new JPanel(new FlowLayout());
    JButton button1 = new JButton("Losuj");
    JLabel text = new Text();
    Randomisation randomCard = new Randomisation(52);
    int accCard = 0;
    JPanel[] images;
    GroupLayout layout;

    public JFrameGameWindow() throws IOException
    {

        super("Domówka");
        //this.setTitle("Domówka");

        //this.setResizable(false);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setIconImage(Toolkit.getDefaultToolkit().getImage("img/DomowkaLogo.png"));

        int widthDisplay = Toolkit.getDefaultToolkit().getScreenSize().width;
        int heightDisplay = Toolkit.getDefaultToolkit().getScreenSize().height;
        int widthFrame = 360;
        int heightFrame = 640;

        this.setBounds((widthDisplay-widthFrame)/2,(heightDisplay-heightFrame)/2,widthFrame,heightFrame);

        button1.addActionListener(this);

        initComponents();

        pack();
        //Images.setVisible(false);

        this.setVisible(true);

    }

    public void actionPerformed(ActionEvent e){
        // TODO Auto-generated method stub

        accCard=randomCard.get(); //ustawienie aktualnej karty do wyswietlenia poprzez wywolanie losowania bez powtorzen
        System.out.println(accCard);
    }

    public void initComponents() throws IOException
    {

        button1.setPreferredSize(new Dimension(100,50));
        //panel.add(button1);

        ReadFile listOfCards = new ReadFile("listOfCards.txt");
        images = new Image[listOfCards.content.size()];

        for(int i=0;i<images.length;i++) {
            images[i]=new Image((String)listOfCards.content.get(i));
        }

        layout = new GroupLayout(getContentPane());
        this.getContentPane().setLayout(layout);

        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);

        layout.setHorizontalGroup(
                layout.createSequentialGroup()
                        .addContainerGap(10, Short.MAX_VALUE)
                .addGroup(
                        layout.createParallelGroup()
                                .addComponent(text)
                                .addComponent(images[accCard],GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE,3000)
                                .addComponent(button1,GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE,500)
                )
        );
        layout.setVerticalGroup(
                layout.createSequentialGroup()
                        .addContainerGap(10, Short.MAX_VALUE)
                        .addComponent(text)
                        .addContainerGap(10, Short.MAX_VALUE)
                        .addComponent(images[accCard],GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE,3000)
                        .addContainerGap(10, Short.MAX_VALUE)
                        .addComponent(button1,GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE,3000)

        );
    }

}

Tutaj jest jeszcze główna klasa, w której jest main, chociaż nie wiem czy jest ona komuś potrzebna:

package domowka;
import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException{
        System.out.println("Hello World!");

        new JFrameGameWindow();
    }
}

Będę bardzo wdzięczny za pomoc ;)