我正在尝试创建一个电梯按钮垫模拟器,按钮标记为1-10,有5行和2列。以下是我要解释的一个例子:
9 10
7 8
5 6
3 4
1 2
目前,我的代码有10个按钮,但都被合并到一个我不想要的列中。看起来像这样:
1
1
2
2
3
3
4
4
5
5
这里只是我的代码片段:(不要介意评论的部分)
@Override
public void start(Stage primaryStage) {
// Get the pane for the scene
primaryStage.setScene(new Scene(getPane(), 180, 600));
// Setup the stage
primaryStage.setTitle("Elevator Buttons");
primaryStage.setResizable(false);
primaryStage.show();
}
protected Pane getPane() {
Pane pane = new VBox(10);
pane.setPadding(new Insets(40));
GridPane grid = new GridPane();
//for (int i = row - 1; i >= 0; i-=2) {
// for (int k = col - 1; k >= 0; i-=1) {
for (int i = 0; i < row; i++) {
for(int k =0; k <col; k++) {
// Set the button number as text for the button
buttonsArray[i][k] = new Button(Integer.toString(i + 1));
// Set preferred width and style with a light gray background
buttonsArray[i][k].setPrefWidth(100);
buttonsArray[i][k].setStyle("-fx-font: 22 arial; -fx-base: LightGray");
// Add the button to the pane and set the handler
pane.getChildren().add(buttonsArray[i][k]);
buttonsArray[i][k].setOnAction(ButtonHandler);
}
}
return pane;
}
那么如何用数组制作两列按钮呢?
答案 0 :(得分:2)
正如评论和其他答案中所指出的,您可以使用GridPane
来实现您想要达到的目标。此代码应该完成这项工作,包括正确标记电梯按钮:
@Override
public void start(Stage primaryStage) {
// Get the pane for the scene
primaryStage.setScene(new Scene(getPane(), 180, 600));
// Setup the stage
primaryStage.setTitle("Elevator Buttons");
primaryStage.setResizable(false);
primaryStage.show();
}
protected Pane getPane() {
Pane pane = new VBox(10);
pane.setPadding(new Insets(40));
GridPane grid = new GridPane();
for (int i = 0; i < row; i++) {
for (int k = 0; k < col; k++) {
// Set the button number as text for the button
Button button = new Button(Integer.toString((row * col - 2 * i - 1) + k));
button.setPrefWidth(100);
button.setStyle("-fx-font: 22 arial; -fx-base: LightGray");
// Add the button to the pane and set the handler
grid.add(button, k, i);
button.setOnAction(buttonHandler);
}
}
return grid;
}
答案 1 :(得分:0)
兑换这个:
pane.getChildren().add(buttonsArray[i][k]);
用这个:
grid.add(buttonsArray[i][k],k,i);
这是James_D在评论中提出的建议。