0
所以我正在爲我的學校開發一個基本的老虎機程序,並且我不斷收到此異常。我明白這是什麼意思,但我不明白爲什麼它讀取我的圖像文件爲空。java.lang.nullpointerexception ImageIcons和優化
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)
任何幫助都需要!
我也不確定我的代碼是多麼優化,所以任何提示都會很棒。
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);
}
}
驅動
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);
}
}
謝謝!