Я делаю традиционную японскую настольную игру (которая похожа на Go).Я хочу поместить изображение в квадрат GridPane (15 * 15), вызвав метод в классе контроллера вне класса.Однако программа контроллера блокируется при выполнении "gomokuBoard.getChildren (). Add (imageview);"в противник_put_stone () метод.Что я должен сделать, чтобы поместить объект управления извне программы контроллера?
Вот что я уже сделал.Я закомментировал строку кода и выполнил программу.Это привело к успеху, за исключением того, что камни противников не появлялись на экране GUI.
Вот часть класса контроллера.Строка, которую я упомянул, является последней строкой метода "oppident_put_stone".
//this method is called by pushing a button in GridPane. this method works.
@FXML private GridPane gomokuBoard;
@FXML private Button hint_button;
@FXML private Label messagefromServer;
@FXML private static Button[][] put_stone_button;
private EventHandler<MouseEvent> mouseClick;
private Image black_stone;
private Image white_stone;
private static int mycolor = 1;
private GomokuGame game;
public void put_mystone(MouseEvent event) {
int x = GridPane.getRowIndex((Node) event.getSource());
int y = GridPane.getColumnIndex((Node) event.getSource());
put_stone_button[x][y].setDisable(true);
game.gomoku.putStone(x, y, mycolor);
GomokuGame.go_signal();
ImageView imageview;
if(mycolor == 1) {
imageview = new ImageView(black_stone);
}
else {
imageview = new ImageView(white_stone);
}
GridPane.setConstraints(imageview, y, x);
gomokuBoard.getChildren().add(imageview);
game.x = x;
game.y = y;
}
//this method is called from outside the controller program.
public void opponent_put_stone(int x, int y) {
put_stone_button[x][y].setDisable(true);
game.gomoku.putStone(x, y, 3-mycolor);
ImageView imageview;
if(mycolor == 1) {
imageview = new ImageView(white_stone);
}
else {
imageview = new ImageView(black_stone);
}
GridPane.setConstraints(imageview, y, x);
gomokuBoard.getChildren().add(imageview); //this line blocks program
}