首页 > 解决方案 > 防止用户点击同一个按钮?

问题描述

我真的是java新手,在做这个项目时我正在学习javafx。当点击按钮时,代码会将行和列发送到另一个类。我的逻辑将相应的行和列发送到另一个类。但我想阻止用户点击同一个按钮。我将如何去做。我知道有一个 setDisable 函数,但是如何实现它。

 for (row = 0; row < 10; row++) {
            for (coloumn = 0; coloumn < 10; coloumn++) {
                button[row][coloumn] = new Button();
              //  button[row][coloumn].setStyle("-fx-background-color: red");
                button[row][coloumn].setPrefSize(50, 50);
                button[row][coloumn].setOnAction(new clickEvents(row, coloumn));
                //no setters, directly passed rows and cols to clickEvents Class
                tileGrid.add(button[row][coloumn], row, coloumn); //adds buttons to the tile grid
                //node , row position in grid, column position in grid
            }
        } 

Revised

for (row = 0; row < 10; row++) {
            for (coloumn = 0; coloumn < 10; coloumn++) {
                button[row][coloumn] = new Button();
              //  button[row][coloumn].setStyle("-fx-background-color: red");
                button[row][coloumn].setPrefSize(50, 50);
                button[row][coloumn].setOnAction(new clickEvents(row, coloumn));
                temprow= row;
                tempcol=coloumn;
                //if(row==temprow && coloumn == tempcol )
              if(button[row][coloumn].isPressed()) {
                  button[row][coloumn].setDisable(true);
              }

                //no setters, directly passed rows and cols to clickEvents Class
                tileGrid.add(button[row][coloumn], row, coloumn); //adds buttons to the tile grid
                //node , row position in grid, column position in grid
            }

标签: javajavafx

解决方案


阅读文档

button.setDisable(true);

顺便说一句,适用于从 Node 继承的任何组件,因此您可以禁用场景中的几乎所有内容。

创建按钮时,设置一个名为 的布尔值clicked,初始化为 false。当用户单击按钮时,处理程序触发,并将布尔值设置为 true。然后你有一些逻辑分支clicked。如果为 true,则不执行任何操作(因为该按钮之前已被禁用),如果为 false,则禁用该按钮。


推荐阅读