动态JavaFX按钮动作

时间:2018-08-20 16:43:01

标签: events button javafx controller

我在管理动态创建的按钮操作时遇到问题。这是我的“主要”课程的示例:

    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”,这是最后一个-但事实并非如此,因为它处于循环中...。 试图在堆栈溢出中搜索解决方案,但我找不到任何... 因此,有人知道如何将这种情况混淆到每个新创建的按钮操作中吗? :(

我会很感激

0 个答案:

没有答案