0

我遇到的问题是,当我尝试将图块添加到边框窗格的中心,然后将该边框窗格添加到根边框窗格的中心时,对齐方式远非正确。

在这里,我创建了一个我命名的主窗格或“根”窗格mainPane。然后我创建bottomPanecenterPane保存最终将添加到底部和中心的项目mainPane

BorderPane mainPane = new BorderPane();

BorderPane bottomPane = new BorderPane();
BorderPane centerPane = new BorderPane();

Button quitButton = new Button("Quit Game");
bottomPane.setRight(quitButton);

Text gameWinLabel = new Text();
gameWinLabel.setText("You win!");
gameWinLabel.setFont(Font.font("Times New Roman", 50));
gameWinLabel.setVisible(false);
bottomPane.setCenter(gameWinLabel);

然后我编写了为记忆游戏生成图块的代码:

char c = 'A';
List<Tile> tiles = new ArrayList<>();
for (int i = 0; i < NUM_OF_PAIRS; i++) {
    tiles.add(new Tile(String.valueOf(c)));
    tiles.add(new Tile(String.valueOf(c)));
    c++;
}

Collections.shuffle(tiles);

for (int i = 0; i < tiles.size(); i++) {
    Tile tile = tiles.get(i);
    tile.setTranslateX(100 * (i % NUM_PER_ROW));
    tile.setTranslateY(100 * (i / NUM_PER_ROW));
    centerPane.getChildren().add(tile);
}

最后,我将容器窗格锚定到mainPane

mainPane.setBottom(bottomPane);
mainPane.setCenter(centerPane);

这是当前的输出: 这是当前输出

最终目标是让游戏以mainPane.

提前感谢您的任何建议!

4

2 回答 2

0

正如我在评论中提到的,GridPane 对你来说是一个更好的选择,要做到这一点,你可以这样做:

GridPane root = new GridPane(), centreGrid = new GridPane();
root.setAlignment(Pos.CENTER);
BorderPane bottomPane = new BorderPane();
Integer rowCount = 0 ,colCount = 0;

Button quitButton = new Button("Quit Game");
bottomPane.setRight(quitButton);

Text gameWinLabel = new Text();
gameWinLabel.setText("You win!");
gameWinLabel.setFont(Font.font("Times New Roman", 50));
gameWinLabel.setVisible(false);
bottomPane.setCenter(gameWinLabel);

char c = 'A';
List<Tile> tiles = new ArrayList<>();
for (int i = 0; i < NUM_OF_PAIRS; i++) {
   tiles.add(new Tile(String.valueOf(c)));
   tiles.add(new Tile(String.valueOf(c)));
   c++;
}

Collections.shuffle(tiles);

for (int i = 0; i < tiles.size(); i++) {
   Tile tile = tiles.get(i);
   if (rowCount > 4) {
      rowCount += 1;
      colCount = 0;
   }
   centreGrid.add(tile, colCount, rowCount);
   colCount += 1;
}

root.add(centreGrid, 0, 1);
root.add(bottomGrid, 0, 2);

至于顶部,请随意添加您喜欢的任何内容。有关更多信息,您可以参考Oracle 页面上的GridPane 。

于 2017-04-26T05:20:07.230 回答
0

为了避免很多麻烦,我调整了大小mainPane以适应游戏板的大小。我意识到这并不是对齐的真正答案,但是为了使游戏板更好(这是我的目标),我认为我的解决方案还可以。

无论如何,感谢您的时间和帮助!

于 2017-04-26T19:21:59.177 回答