当前位置: 首页 > 知识库问答 >
问题:

JavaFX-我怎么知道GridPane中的按钮存在于哪里?[复制]

上官鸿朗
2023-03-14

我有一个fxml文件,其中包含GridPane,我想在GridPane的每个方块中找到按钮。然后我想在刚刚点击的按钮上显示一个图像。然而,当单击按钮并调用控制器中的方法时,似乎没有关于单击按钮位置的信息。如果没有这个,我就不知道该显示哪个方块的图像。我如何解决这个问题?

我正在使用JavaFX ScneBuilder2.0。我已经尝试了很多方法,其数量与GridPane中的正方形数量相对应。显然,它导致产生太长的源文件,我放弃了这样做。

这是控制器类的一部分。

//GomokuController.java
package client;

import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;

public class GomokuController implements Initializable{
    @FXML private GridPane gomokuBoard;
    @FXML private Button[][] put_stone_button = new Button[15][15];

    @FXML public void put_stone(){
      //called by pushing a button in the GridPane
      //I wanna know in which square the pushed button locates.
    }
}

共有1个答案

卫高谊
2023-03-14

您应该能够调用GridPane.getRowIndex()GridPane.getClonIndex()方法并传入单击的Button

但是,您需要以某种方式将按钮传递给您的put\u stone()方法。在下面的示例中,我在单击按钮时将对按钮的引用传递给方法:

put_stone_button[0].setOnAction(event -> put_stone(put_stone_button[0])

public void put_stone(Button button){
  int row = GridPane.getRowIndex(button);
  int column = GridPane.getColumnIndex(button);
}

您可能需要根据您的项目调整此解决方案,因为您发布的代码中不清楚您的实现。

旁注:请学习Java命名约定并遵守它们。

 类似资料:
  • 问题内容: 我有两个单选按钮,想要发布所选一个的值。如何使用jQuery获得价值? 我可以像这样得到所有这些: 我怎么知道选择了哪一个? 问题答案: 要获取具有ID的表单中 所选 项目的值: 这是一个例子:

  • 我正在用JavaFX编写一个益智游戏。 您可以在单击网格后与另一个按钮进行按钮交换吗? 前任。我想在按下按钮1后交换按钮1和9。我认为应该有可能改变网格窗格的位置。 当我点击按钮4时,它与按钮9互换。 有没有办法做到这一点? 这是我的代码:

  • 问题内容: 我从java2s.com下载了servlet-api.jar的副本。我怎么知道它是什么版本?该网站上没有参考。 编辑 啊。道歉。当我双击得到的jar中的MANIFEST.MF文件时,我应该已经列出了写字板输出的内容: 如您所见,它没有告诉我版本,因此是问题所在。 问题答案: 您可以从META-INF中获取它,也可以使用Win rar或类似的归档工具来探索jar文件的内容。 我个人更喜欢

  • 谢谢你的回应。我检查了位置,它被标识为与ANDROID_SDK_HOME环境路径相同的位置。它仍然说根是未定义的。我创建了一个到相同位置的ANDROID_SDK_ROOT环境路径,但它仍然没有定义。

  • 问题内容: 我有一个访问前端和sql server后端。我想知道哪些用户当前正在使用该数据库。使用access或sql-server可以做到这一点吗? 问题答案: 在SQL Server中,您可以运行以下存储过程: 编辑: 如果要在任何给定时间查看谁在使用服务器,可以使用此查询。这将使您可以随意进一步过滤。

  • 问题内容: 在我的Jenkins管道中,如果管道发生故障,我通常使用声明性功能向我发送电子邮件。 该函数的简单语法如下: 在上面的电子邮件中,我还想提到管道的哪个阶段(假设管道有5到6个阶段)失败。我怎样才能做到这一点?任何帮助深表感谢。 对上述要求的扩展将是向用户提供实际的错误日志(发生故障的阶段),作为故障通知电子邮件的一部分。 想法是,当用户从jenkins收到故障通知时,他应该知道管道的哪