我正在创建一个Go-like程序并创建了主板,但我仍然坚持如何对齐可以放置棋子的位置。我目前的计划是有一个19乘19的空ImageView网格。当盘旋时,这些ImageView会将其Image更改为translucentStone.png,当石头放置在该位置时,它会将Image更改为blackStone.png或whiteStone.png。
将所有ImageView设置为translucentStone.png后,主板应该如下所示:
我试图使用GridPane正确对齐所有这些ImageView,因为它在逻辑上似乎是最好的选择,但是我不能让ImageViews与linesBoard.png正确对齐(这个图像是黑色的游戏板上包含的线条)。当我尝试绑定GridPane时会更糟,所以当应用程序窗口改变大小时,它会使用gamesBoardPane或linesBoard对象适当增长/缩小。
我看到的另一个可能的问题是ImageView无法根据它们的中心x和y对齐,所以我不确定这是否会阻止这种行为的实现。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Gomoku extends Application{
@Override
public void start(Stage primaryStage) {
StackPane gameBoardPane = new StackPane();
ImageView woodBoard = new ImageView("image/woodBoard.png");
ImageView linesBoard = new ImageView("image/linesBoard.png");
Image translucentStone = new Image("image/translucentStone.png");
Image whiteStone = new Image("image/whiteStone.png");
Image blackStone = new Image("image/blackStone.png");
woodBoard.fitHeightProperty().bind(gameBoardPane.heightProperty());
woodBoard.fitWidthProperty().bind(gameBoardPane.heightProperty());
linesBoard.fitHeightProperty().bind(gameBoardPane.heightProperty()
.multiply(.9));
linesBoard.fitWidthProperty().bind(gameBoardPane.heightProperty()
.multiply(.9));
gameBoardPane.getChildren().addAll(woodBoard, linesBoard);
Scene scene = new Scene(gameBoardPane, 1000, 600);
primaryStage.setScene(scene);
primaryStage.setTitle("Gomoku");
primaryStage.getIcons().add(whiteStone);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}