Java lambda表达式应该是循环的最终表达式

Java lambda表达式应该是循环的最终表达式,java,intellij-idea,javafx,lambda,Java,Intellij Idea,Javafx,Lambda,我试图从活动列表中检索一些项目,以便使用JavaFX显示它们,但同时,如果单击项目按钮,我还希望能够删除这些项目。如何区分单击哪个按钮以删除正确的行?我试图将lambda表达式指定给按钮,但显然它在for循环中不起作用。有没有关于如何解决这个问题的建议 gridPane = new GridPane(); String path = "image.png"; items = new ArrayList<>(); items.add("Activity

我试图从活动列表中检索一些项目,以便使用JavaFX显示它们,但同时,如果单击项目按钮,我还希望能够删除这些项目。如何区分单击哪个按钮以删除正确的行?我试图将lambda表达式指定给按钮,但显然它在for循环中不起作用。有没有关于如何解决这个问题的建议

   gridPane = new GridPane();

    String path = "image.png";
    items = new ArrayList<>();

    items.add("Activity 1");
    items.add("Activity 2");
    items.add("Activity 3");

    for (int i=0; i<items.size(); i++) {
        gridPane.add(new Text(items.get(i)), 1, i);
        gridPane.add(new JFXButton("", new ImageView(path)),2,i);
        (JFXButton)gridPane.setOnMouseClicked(e -> deleteActivity(gridPane.getRowIndex(i)));
    }
gridPane=newgridpane();
字符串path=“image.png”;
items=newarraylist();
项目。添加(“活动1”);
项目。添加(“活动2”);
项目。添加(“活动3”);
对于(inti=0;i删除活动(gridPane.getRowIndex(i));
}
我有一个你想要的:

JFXButton button = new JFXButton("", new ImageView(path);   
gridPane.add(button),2,i);
button.setOnMouseClicked(e -> deleteActivity(gridPane.getRowIndex(i)));

您得到的确切错误是什么?lambda表达式中使用的变量应该是final或实际上是final,参考最后一行中的“i”,定义变量
int ii=i的可能重复项在循环中,并在lambda中使用它。@AndyTurner现在我得到“不可转换的类型;无法将'void'强制转换为'com.jfoenix.controls.JFXButton'”,因为JFXButton强制转换