尝试为数组中的按钮指定颜色时,Array中的空点错误

问题描述 投票:0回答:2

我有一个充满几个按钮的数组,我试图通过数组并给每个按钮一个颜色,但我不断得到一个零点异常错误。

   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
      }
  } 

当我尝试在每个循环中为所有按钮提供颜色时,会发生错误。

java arrays javafx nullpointerexception scenebuilder
2个回答
2
投票

数组从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();


1
投票

您只初始化了数组中的少数元素。其他引用为null。

更改此行代码

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

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

请注意,数组从索引0开始!

© www.soinside.com 2019 - 2024. All rights reserved.