创建按钮,但让每个按钮都有自己的变量名

时间:2018-10-18 14:47:03

标签: java javafx

我目前有一个程序,可以按一个“堆栈按钮”并创建9个堆栈(只是按钮)。但是,我希望它到每个按钮都有其自身标识的位置,因此,如果单击特定的按钮,它将带我到每个按钮的特定窗口。

这是我的代码:

private void createButtonActivate(){
    System.out.println("A stack has been created");
    stackCount++;
    newStackButton = new Button((Integer.toString(stackCount)));
    newStackButton.setOnAction(actionEvent -> {
        methods.openNoteCard();
    });

    root.getChildren().add(newStackButton);
}

以下是创建按钮的过程:

private void createStack(){
    stackCreated = true;

    if (stackCount < 3 ) {
        createButtonActivate();
        buttonXPos = buttonXPos + 150;
    }
    else if (stackCount >= 3 && stackCount < 6){
        if (stackCount == 3){
            buttonXPos = 50;
            buttonYPos = buttonYPos + 150;
        }
        createButtonActivate();
        buttonXPos = buttonXPos + 150;
       // buttonXPos =
    }
    else if (stackCount >= 6 && stackCount < 9){
        if (stackCount == 6){
            buttonXPos = 50;
            buttonYPos = buttonYPos + 150;
        }
        createButtonActivate();
        buttonXPos = buttonXPos + 150;
    }

}

我希望我没有提供太多代码,实际上我已经彻底解释了我的问题,哈哈,谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果要在单击按钮时使按钮具有独特的逻辑,则实际上可以在openNoteCard方法中添加参数。

例如:

void openNoteCard(int stackId) {
    switch (stackId) {
        case 0: //logic for the first button
        case 1: //logic for the second button
        // and so on...
    }
}

因此,在您的createButtonActive方法中,它看起来像这样:

private void createButtonActivate(){
    System.out.println("A stack has been created");
    stackCount++;
    newStackButton = new Button((Integer.toString(stackCount)));
    newStackButton.setOnAction(actionEvent -> {
        methods.openNoteCard(stackCount); // Passing a parameter here
    });

    root.getChildren().add(newStackButton);
}