为什么这只会在网格上产生一个按钮?

DIt*_*Mad 2 java javafx

当我运行它时,它只创建一个按钮。我正在尝试创建一个 10x10 的按钮网格窗格,当单击按钮时,它会将行列(x,y)坐标发送到另一个可以处理其目的的类(战舰游戏)

    Button button[][] = new Button[10][10];
    public static int rows, columns, gridSize;

    for (rows = 0; rows < 10; rows++) {
        for (columns = 0; columns < 10; columns++) {
            button[rows][columns] = new Button();
            button[rows][columns].setStyle("-fx-background-color: red");
            button[rows][columns].setPrefSize(50, 50);

            button[rows][columns].setOnMouseClicked(new clickEvents(rows, columns));
            //no setters, directly passed rows and cols to clickEvents Class

            tileGrid.getChildren().add(button[rows][columns]); //adds buttons to the tile grid
        }
    }

    container.getChildren().addAll(tileGrid);

    ScrollPane scrollPane = new ScrollPane(container);
    primaryStage.setScene(new Scene(scrollPane));
    primaryStage.show();
Run Code Online (Sandbox Code Playgroud)

jew*_*sea 5

您没有告诉系统将按钮放在 GridPane 中的什么位置。

使用gridPane.add(child, colIndex, rowIndex)

tileGrid.add(button[row][column], column, row); 
Run Code Online (Sandbox Code Playgroud)

我修正了拼写并从行、列变量中删除了复数(尾随 's')。

或者,您可以在 GridPane 中的节点上设置约束

tileGrid.getChildren().add(button[row][column]);
GridPane.setConstraints(button[row][column], column, row);
Run Code Online (Sandbox Code Playgroud)

但是使用 add 方法来指定初始添加参数中的约束(如前面的示例中所示)则不那么冗长。

对作为子节点添加到网格的节点没有任何限制,所有子节点都将位于默认的 0,0 网格位置(全部堆叠在彼此的顶部)。