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.
我有一个包含 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.