2016-11-09 83 views
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); 


} 

} 

謝謝!

回答

0

在此代碼

images.add(imageGreen); 

圖像爲空。它尚未初始化。