JavaFX:如何创建两列按钮?

标签 java javafx

我正在尝试创建一个电梯按钮板模拟器,其按钮标记为 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;
}

那么我如何用数组制作两列按钮?

最佳答案

正如评论和其他答案中所指出的,您可以使用 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;
    }

关于JavaFX:如何创建两列按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36580443/

相关文章:

java - 无法读取受限或受限访问计算机或防火墙安全的 Windows 注册表值

java - java中的汇编代码内联以及java中如何区分32位和64位操作系统

java - 即使类在编译时存在,也无法加载该类

JavaFX:如果另一个对象处于 Activity 状态,则用于禁用按钮的 FXML 脚本

IOS 上的 JavaFXPorts - 相当于 FXActivity

javafx - TableView ScrollBar策略

java - 如何使用 Android 相机显示两个相同的相机预览?

java - 我可以将 C++ 垃圾收集器附加到对 C/C++ 库进行 JNI 调用的 Java 程序吗?

java - 如何正确地将 .Text 属性绑定(bind)到 SimpleObjectProperty 的 Overridden .asString() 方法?

java - 将数据点添加到系列时,未经检查的数据调用错误