我真的是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
}
答案 0 :(得分:1)
阅读doc。
button.setDisable(true);
顺便说一下,可以在继承自Node的任何组件上工作,因此您可以禁用场景中的几乎所有内容。
创建按钮时,设置一个名为clicked
的布尔值,初始化为false。当用户单击按钮时,处理程序将触发,并将布尔值设置为true。然后,您会在clicked
上分支一些逻辑。如果为true,则不执行任何操作(因为该按钮先前已被禁用),如果为false,则禁用该按钮。