【问题标题】:Gridpane of Squares in JavaFXJavaFX 中的正方形网格窗格
【发布时间】:2016-02-12 16:05:56
【问题描述】:

我是 JavaFX 的新手,我正在尝试制作棋盘格。我首先要制作一个正方形的网格窗格,其中填充基于随机颜色 数组。我不知道为什么,但方块并没有填满网格的其余部分。我还想使用约束来设置网格的高度和宽度。

int rowNum = 10;
int colNum = 10;
int gridHeight = 10;
int gridWidth = 10;

public void start(Stage primaryStage) {
    GridPane grid = new GridPane();

    //grid.getColumnConstraints().add(new ColumnConstraints(gridWidth));
    //grid.getRowConstraints().add(new RowConstraints(gridHeight));

    Random rand = new Random();
    Color[] colors = {Color.BLACK, Color.BLUE, Color.GREEN, Color.RED};

    int n = rand.nextInt(4)+1;
    for(int row = 0; row < rowNum; row++){
           for(int col = 0; col < colNum; col++){
               Rectangle rec = new Rectangle();
               rec.setWidth(2);
               rec.setHeight(2);
               rec.setFill(colors[n]);
               GridPane.setRowIndex(rec, row);
               GridPane.setColumnIndex(rec, col);
               grid.getChildren().addAll(rec);
           }
    }

    Scene scene = new Scene(grid, 350, 250);

    primaryStage.setTitle("Grid");
    primaryStage.setScene(scene);
    primaryStage.show();
}

左上角只出现一个方块。 为什么会这样?

【问题讨论】:

  • 所有矩形都使用相同的颜色。所以你有 100 个 2x2 矩形,但它们看起来就像一个 20x20 矩形......

标签: java javafx


【解决方案1】:

您需要在两个循环内移动随机数生成步骤,这样您就不会使用进入循环之前设置的相同颜色。此外,您不需要该随机数生成器上的加 1。允许的索引是 0-3。当您请求 nextInt() 并输入 4 时,这是独占的,这意味着永远不会选择 4(这是您对 Color 数组所需要的)。

您的代码应如下所示:

for (int row = 0; row < rowNum; row++) {
    for (int col = 0; col < colNum; col++) {
        int n = rand.nextInt(4);
        Rectangle rec = new Rectangle();
        rec.setWidth(2);
        rec.setHeight(2);
        rec.setFill(colors[n]);
        GridPane.setRowIndex(rec, row);
        GridPane.setColumnIndex(rec, col);
        grid.getChildren().addAll(rec);
    }
}

【讨论】:

    猜你喜欢
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2016-09-03
    • 1970-01-01
    • 2014-09-17
    • 2017-06-23
    • 1970-01-01
    相关资源
    最近更新 更多