0

so I'm working on a basic Slot Machine program for my school and I keep getting this exception. I understand what it means but I dont understand why it reads my image files as null.

Exception in thread "main" java.lang.NullPointerException
at ui.UI.<init>(UI.java:22)
at ui.Driver.<init>(Driver.java:27)
at ui.Driver.main(Driver.java:39)

Any help is NEEDED!

I'm also not sure how optimal my code is so any tips on that would be great.

package ui;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;

import javax.swing.*;


public class UI extends JPanel {
private ArrayList<ImageIcon> images;
private ArrayList<JLabel> labels;
JPanel panel1;
JButton a;

public UI() {
    ImageIcon imageGreen = new ImageIcon("C:/Users/Liam/workspace/CSE115-Lab8a/Images/Green.png");
    ImageIcon imagePurple = new ImageIcon("C:/Users/Liam/workspace/CSE115-Lab8a/Images/Purple.png");
    ImageIcon imageRed = new ImageIcon("C:/Users/Liam/workspace/CSE115-Lab8a/Images/Red.png");

    images.add(imageGreen);
    images.add(imagePurple);
    images.add(imageRed);
    setLayout(new GridLayout(3, 2));


    for(ImageIcon s : images) {
        JLabel label = new JLabel(s);
        labels.add(label);
        add(label);

    }
    a = new JButton("SPIN");
    add(a);

    ActionListener click = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e){
            JLabel label = new JLabel();
            removeAll();
            updateUI();
            Collections.shuffle(labels);
            add(label);
            updateUI();
            }
        };
        a.addActionListener(click);
}
}

Driver

package ui;
import javax.swing.*;
import java.awt.*;
import java.awt.Dimension;




public class Driver extends JFrame {

private static final long serialVersionUID = -3413552064004843029L;
private JPanel panelMain;
private UI panel;

public Driver() {
    setLayout(new GridLayout(2, 1));
    setPreferredSize(new Dimension(420, 90));
    setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    panelMain = new JPanel();
    panelMain.setBackground(Color.WHITE);
    panelMain.setBounds(0, 0, 420, 90);
    panelMain.setPreferredSize(new Dimension(200, 40));
    add(panelMain);

    panel = new UI();
    panelMain.add(panel);
    pack();






}

public static void main(String[] args) {
    Driver frame = new Driver();
    frame.setVisible(true);


}

}

THANKS!

1 Answers1

0

In this code

images.add(imageGreen);

images is null. It has not been initialized.

Scary Wombat
  • 41,782
  • 5
  • 32
  • 62