阻止用户单击同一按钮?

时间:2019-12-11 00:54:57

标签: java javafx

我真的是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
            }

1 个答案:

答案 0 :(得分:1)

阅读doc

button.setDisable(true);

顺便说一下,可以在继承自Node的任何组件上工作,因此您可以禁用场景中的几乎所有内容。

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