当我运行它时,它只创建一个按钮。我正在尝试创建一个 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)
您没有告诉系统将按钮放在 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 网格位置(全部堆叠在彼此的顶部)。
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |