我在 JavaFX 中创建了一个组合框数组和一个按钮数组。我想分配数组的每个按钮,对相应索引的组合框执行某些操作:
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());
});
}
这样,每当您单击“随机”按钮时,相应的组合框就会设置为随机颜色。但是,当我尝试这样做时,我收到错误
local variables referenced from a lambda expression must be final or effectively final
我发现错误是由我使用变量 i 引起的,但如何解决这个问题?
提前致谢。
最佳答案
只需创建一个额外的最终变量以在 lamda 中使用:
final ComboBox colorBoxi = colorBox[i];
randomColorBtn[i].setOnAction((ActionEvent event) -> {
colorBoxi.setValue(getRandomPlayerIconColor());
});
关于java - 为 JavaFX 按钮数组中的每个按钮分配一个操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33323804/