有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我目前有一个程序,你可以按一个“堆栈按钮”,并创建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) 个答案

  1. # 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);
    }