尝试为数组中的按钮提供颜色时数组中出现空点错误

Null point error in Array when trying to give Buttons in array a color

我有一个包含几个按钮的数组,我试图遍历该数组并为每个按钮指定一种颜色,但是我一直收到空点异常错误。

   public static Button[] arrayButtons = new Button[33];                
   @FXML public Button btn1 = new Button();
   @FXML public Button btn2 = new Button();
   @FXML public Button btn3 = new Button();

  @FXML
  public void initializeButtonArray() {        
    arrayButtons[1] = btn1;
    arrayButtons[2] = btn2;
    arrayButtons[3] = btn3;
    arrayButtons[4] = btn4;       
  }

   @FXML
   private void test() {

      initializeButtonArray();
      for(Button btn : arrayButtons) {
          btn.setStyle("-fx-background-color: #FF0000");  //error occurs here
      }
  } 

当我尝试为每个循环中的所有按钮指定颜色时发生错误。

您只初始化了数组中的几个元素。其他正在引用 null。

更改这行代码

public static Button[] arrayButtons = new Button[33];   

public static Button[] arrayButtons = new Button[4];   

注意数组从索引 0 开始!

数组从 0 开始,因此您永远不会将 arrayButtons[0] 设置为任何东西,将其保留为 null 也就是在调用时等待抛出 NullPointer。你也永远不会初始化 btn4 ,它会在调用时抛出一个空指针,最后为什么你要创建一个 33 按钮数组,当你只初始化 3 个时,其他人会抛出你想猜它是 NPE

试试这个

public static Button[] arrayButtons = new Button[4];

public void initializeButtonArray() {  
    arrayButtons[0] = btn1;      
    arrayButtons[1] = btn2;
    arrayButtons[2] = btn3;
    arrayButtons[3] = btn4;      
}

添加这个

@FXML public Button btn4;

在您通过 arrayButtons 循环的第一次迭代中,它抛出一个空指针,因为它正在寻找 arrayButtons[0] 但它设置为 null 这会破坏您的整个循环

此外,如果您引用的是 FXML,则不要输入 = new Button();