2013-05-11 5 views
0

im работает над кодом для базовой игры палача с качелиным интерфейсом. Я использую цикл 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, ничем не отличаются. Вы должны инициализировать ваш массив JButtonletterButtons до попытки вызвать какие-либо операции на них

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

Спасибо за помощь! я ценю это! – Jpm61704

3

JButton[] letterButtons = new JButton[26]; инициализирует каждый элемент массива в нуль. Вам необходимо пройти через массив и назначить каждую позицию a new JButton()

Смежные вопросы