我在管理动态创建的按钮操作时遇到问题。这是我的“主要”课程的示例:
public class Lexicon {
public String word;
public String translation;
public int id;
...
}
现在,我们有一些FXML,其中包含与Lexicon Object进行比较的Label。现在,我想制作X个按钮,每个按钮都应“记住”所选Lexicons列表中的一个ID:
Lexicon labelLexicon;
List<Lexicon> buttonLexicon;
在buttonLexicon中,我们只有几个Lexicon对象,并且其中一个肯定与labelLexicon相同。任务是,单击的每个按钮都应该将记住的Lexicon.id与labelLexicon.id进行比较,如果它们相等,我们将再次进行比较(如果不相同,它将随机生成另一个列表)-打印一些内容。 我尝试了很多次使用lambda表达式,但是对我来说不起作用,或者我只是搞砸了……还尝试制作另一个帮助类,例如:
public class ButtonPair {
public Button button;
public int pairId;
public ButtonPair(Button button, int pairId){
this.button = button;
this.pairId = pairId;
}
}
但是它不想接受任何非最终条件,或者弹出其他异常...然后我尝试了类似的事情:
private void buttonTest(int n){
for(int i =0; i<n; i++){
Button button = new Button();
button.setOnAction(new EventHandler<ActionEvent>(){
@Override public void handle (ActionEvent e){
if (buttonLexicon.get(i).id == labelLexicon.id){
//do something
}
}
});
buttonList.add(button);
hbboxx.getChildren().clear();
hbboxx.getChildren().addAll(buttonList);
}
}
但是,每次我尝试新条件时,它仍会称其为“ i”,这是最后一个-但事实并非如此,因为它处于循环中...。 试图在堆栈溢出中搜索解决方案,但我找不到任何... 因此,有人知道如何将这种情况混淆到每个新创建的按钮操作中吗? :(
我会很感激