2013-05-11 42 views
0

即時通訊工作的基本Hangman遊戲的代碼與揮杆的UI。我正在使用for循環來啓動字母的所有按鈕。然而即時通訊39行上得到一個空指針異常。我已經看過它,不知道爲什麼它不能正常工作。底部10行左右的代碼是問題被拋出。每個循環中的數組錯誤java

import java.awt.Color; 
    import javax.swing.*; 

    public class GameUI { 

    public static void main(String[] args){ 
     GameUI ui = new GameUI(); 
     ui.initializeUI(); 
    } 

    public void initializeUI(){ 
     //initialize the window 
     JFrame window = new JFrame(); 
     window.setSize(500,500); 
     window.setResizable(false); 
     window.setVisible(true); 

     //initialize main panel 
     JPanel wrapper = new JPanel(); 
     wrapper.setLayout(null); 
     Color BGColor = new Color(240,230,140); 
     wrapper.setBackground(BGColor); 
     window.getContentPane().add(wrapper); 

     //Creates JLAbel title, this is used for the title of the game 
     JLabel title = new JLabel("Hangman v0.1"); 
     title.setBounds(10, 5, 200, 50); 
     wrapper.add(title); 
     //================================================================= 
     //Creates JButtons for each letter (ERROR OCCURS BELLOW ON FIRST LINE AFTER LOOP BEIGNS) 
     //================================================================= 
     char[] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; 
     JButton[] letterButtons = new JButton[26]; 

     int counter = 0; 

     for (char letter:alphabet){ 
      letterButtons[counter].setText("" + letter); 

      //sets positions for each button 
      int posY = 50; 
      int posX = counter*5 + 10; 
      letterButtons[counter].setBounds(posX, posY, 10, 10); 
      wrapper.add(letterButtons[counter]); 
      counter++; 
     }  
    } 
} 

回答

7

Java中的對象默認爲null。那些在Object陣列中沒有什麼不同。您需要將JButton數組初始化試圖調用它們的

for (int i=0; i < letterButtons.length; i++) { 
    letterButtons[i] = new JButton(); 
} 
+0

感謝您的幫助!我很感激! – Jpm61704 2013-05-11 03:00:19

3

JButton[] letterButtons = new JButton[26];任何操作初始化爲空每個數組元素letterButtons之前。你必須遍歷數組並分配每個位置new JButton()