我有一个包含GridPane的fxml文件,我想在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.
}
}
答案 0 :(得分:2)
您应该只能够调用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);
}
由于您发布的代码中的实现方式不清楚,因此您可能需要将此解决方案适应您的项目。
旁注::请学习Java naming conventions并坚持使用。