我正在为带有 swing UI 的基本刽子手游戏编写代码。我正在使用 for 循环来启动字母的所有按钮。但是我在第 39 行遇到了空指针异常。我已经查看了它,但不确定为什么它不能正常工作。下面 10 行左右的代码是引发问题的地方。
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++;
}
}
}
最佳答案
Java 中的对象默认为 null
。 Object
数组中的内容没有什么不同。在尝试对 JButton
数组 letterButtons
调用任何操作之前,您需要初始化它们
for (int i=0; i < letterButtons.length; i++) {
letterButtons[i] = new JButton();
}
关于java - foreach循环java中的数组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16493166/