java - 防止用户点击同一个按钮?
问题描述
我真的是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
}
解决方案
阅读文档。
button.setDisable(true);
顺便说一句,适用于从 Node 继承的任何组件,因此您可以禁用场景中的几乎所有内容。
创建按钮时,设置一个名为 的布尔值clicked
,初始化为 false。当用户单击按钮时,处理程序触发,并将布尔值设置为 true。然后你有一些逻辑分支clicked
。如果为 true,则不执行任何操作(因为该按钮之前已被禁用),如果为 false,则禁用该按钮。
推荐阅读
- twig - 树枝排序功能,排序数字低高
- openssl - 如何确保 OpenJ9 使用捆绑的 OpenSSL 加密库进行所有加密操作?
- python - 如何从 Python 的 Anaconda 安装中删除我的所有 pycache 文件夹?
- python - 在 Pytest 文档中使用作为 *fruit_bowl 传入参数的目的
- file-permissions - Asp.net 站点:无法访问的日志:状态
- oracle - 不一致的数据类型:预期的 CHAR 得到了 REF
- python - 将 Azure 翻译的 PDF 文件保存为 MS Word docx 文件
- python-3.x - Python 网络日志记录示例 - 如何禁用服务器端控制台打印
- javascript - 让 Bootstrap 日期选择器显示为字符串,但格式为 yyyy-mm-dddd
- java - 我无法让它在 java 中的工资单程序上正确扣除。我得到的错误是我的变量之一尚未初始化