【发布时间】:2019-03-10 11:40:23
【问题描述】:
我正在尝试从活动列表中检索一些项目,以便使用 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)));
}
【问题讨论】:
-
您得到的确切错误是什么?
-
在 lambda 表达式中使用的变量应该是 final 或者实际上是 final 引用最后一行中的“i”
-
在循环内定义一个变量
int ii = i;,并在lambda中使用它。 -
@AndyTurner 现在我得到“不可转换的类型;由于 JFXButton 转换,无法将 'void' 转换为 'com.jfoenix.controls.JFXButton'”
标签: java intellij-idea javafx lambda