JavaFX - 我如何知道 GridPane 中的按钮在哪里?

JavaFX - How do I know where a button in a GridPane exists?

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

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

这是控制器的一部分 class。

//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.
    }
}

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

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

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);
}

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

Side Note: Please learn the Java naming conventions and stick to them.