【问题标题】:Assigning an action to each button, in an array of buttons in JavaFX在 JavaFX 的按钮数组中为每个按钮分配一个操作
【发布时间】:2016-01-24 06:10:08
【问题描述】:

我在 JavaFX 中创建了一个 ComboBox 数组和一个按钮数组。我想分配数组的每个按钮,对相应索引的 ComboBox 做一些事情:

for(int i = 0; i < 6; i++) {
    colorBox[i] = new ComboBox();
    colorBox[i].getItems().addAll("Blue", "Orange", "Green", "Yellow", "White", "Red");

    randomColorBtn[i] = new Button("Random color");
    randomColorBtn[i].setOnAction((ActionEvent event) -> {
        colorBox[i].setValue(getRandomPlayerIconColor());
    });
}

因此,每当您单击“随机”按钮时,相应的 ComboBox 都会设置为随机颜色。但是,当我尝试这样做时,我得到了错误

从 lambda 表达式引用的局部变量必须是 final 或有效 final

我知道错误源于我使用变量 i,但我该如何解决这个问题?

提前致谢。

【问题讨论】:

    标签: java arrays button javafx actionevent


    【解决方案1】:

    只需创建一个额外的最终变量以在 lamda 中使用:

    final ComboBox colorBoxi = colorBox[i];
    randomColorBtn[i].setOnAction((ActionEvent event) -> {
        colorBoxi.setValue(getRandomPlayerIconColor());
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2019-09-08
      • 1970-01-01
      相关资源
      最近更新 更多