java - 为 JavaFX 按钮数组中的每个按钮分配一个操作

标签 java arrays button javafx actionevent

我在 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/

相关文章:

javascript - 在 JavaScript 中获取数组中的数组对象

java - 线程 "AWT-EventQueue-0"java.lang.NullPointerException 中出现异常(面板在完全加载之前显示?)

java - 为什么 File.renameTo 不会改变 File 指向的位置?

java - android:如果不满足某些条件,则不应单击 RadioButton

javascript - 从对象数组构建对象的最高效方法

c# - 如何取消winform按钮的点击事件?

Java Servlet 3.0 文件上传 - 删除 TMP 文件

arrays - 如果子数组包含 X,则 Swift 过滤数组元素

java - 强制关闭!!用于分配 RGB 值 0-255 中的随机颜色的按钮

android - 更改按钮图像onClick android