gpt4 book ai didi

Javafx 如何在单击按钮后取消单击/禁用按钮

转载 作者:行者123 更新时间:2023-12-02 01:22:14 24 4
gpt4 key购买 nike

编辑:底部的解决方案

这是跳棋游戏。单击一个按钮后,它会等待单击第二个按钮来与其交换。但是,有时您可能不想移动该按钮,但一旦单击它,就无法回头,因为我无法禁用它。

从这里的其他帖子中,我看到人们使用

button.setVisable(false);    

这只会使其在第一次单击后不可见。

button.setCancelButton(false);    

这没有任何作用。

button.setDisable(false);    

这也没有做任何事情。编辑:所有这些方法都经过了 true 和 false 的尝试。

private void buttonClicked(Object source) {

boolean bool = false;

if (!(source instanceof Button)) {
return;
}

Button button = (Button) source;

if (clickCounter == 0) {
first = button;
first.setStyle("-fx-background-color: LightGreen");


} else {

second = button;

bool = legalMove(GridPane.getRowIndex(first), GridPane.getColumnIndex(first), GridPane.getRowIndex(second), GridPane.getColumnIndex(second), source);
//swap();

System.out.println("checking the bool " + bool);
}
if(bool == true){

swap();

}
else{
System.out.println("Button disabled");

//first.setVisible(false);
//first.setCancelButton(true);
//first.setDisable(false);
clickCounter = 0;

}

System.out.println(clickCounter + " " + ((Button) source).getText());
clickCounter = ++clickCounter % 2;



}

私有(private)无效交换(){

    int firstRow = GridPane.getRowIndex(first);
int firstCol = GridPane.getColumnIndex(first);

int secondRow = GridPane.getRowIndex(second);
int secondCol = GridPane.getColumnIndex(second);

grid.getChildren().removeAll(first, second);
grid.add(first, secondCol, secondRow);
second.setText(" ");
grid.add(second, firstCol, firstRow);

first.setStyle(null);

}

private boolean legalMove(int firstRow, int firstCol, int secondRow, int secondCol, Object source) {

System.out.println("returned back");
//can only move up/down, not diagonally
if (firstCol != secondCol) {
clickCounter = 0;


System.out.println("Can't move diagonally");

return false;
}

//test if the move is no more than 1 spot away
if ((secondRow - firstRow) != 1 && (firstRow - secondRow) != 1) {
clickCounter = 0;
System.out.println("Can't move more than one spot");

return false;
}

return killCheck();


}

单击按钮后,您应该能够再次单击它,或者单击错误的移动,甚至可能我会在侧面有一个按钮,允许用户禁用该按钮,以便他们可以选择一个使用不同的按钮。

编辑:解决方案

因此,要真正禁用该按钮,您必须使用

 setDisable(true);     

但是你还需要

 setDisable(false);   

这样它就可以重新启用它,或者其他什么,我实际上不知道为什么会起作用。

if(bool == false && clickCounter == 1){
System.out.println("Button disabled");


first.setDisable(true);
first.setDisable(false);
first.setStyle(null); //this sets the button color back to normal

clickCounter = 0;
return; //reset counter and return to top of buttonClicked() method

}

最佳答案

要禁用按钮,您需要将disabled-property设置为true。

button.setDisable(true);   

您可以在官方 Javadoc 中看到,节点是按钮的父级 -> here

关于Javafx 如何在单击按钮后取消单击/禁用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57483367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com