Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX:如何创建两列按钮?_Java_Javafx - Fatal编程技术网

JavaFX:如何创建两列按钮?

JavaFX:如何创建两列按钮?,java,javafx,Java,Javafx,我正在尝试创建一个电梯按钮板模拟器,按钮标记为1-10,有5行两列。下面是我试图解释的一个例子: 9 10 7 8 5 6 3 4 1 2 目前,我的代码有10个按钮,但都合并成一列,我不想。看起来是这样的: 1 1 2 2 3 3 4 4 5 5 下面是我的代码片段:(不要介意注释的部分) @覆盖 公共无效开始(阶段primaryStage){ //获取场景的窗格 setScene(新场景(getPane(),1

我正在尝试创建一个电梯按钮板模拟器,按钮标记为1-10,有5行两列。下面是我试图解释的一个例子:

9        10
7         8
5         6
3         4
1         2
目前,我的代码有10个按钮,但都合并成一列,我不想。看起来是这样的:

1
1
2
2
3
3
4
4
5
5
下面是我的代码片段:(不要介意注释的部分)

@覆盖
公共无效开始(阶段primaryStage){
//获取场景的窗格
setScene(新场景(getPane(),180600));
//搭建舞台
primaryStage.setTitle(“电梯按钮”);
primaryStage.SetResizeable(假);
primaryStage.show();
}
受保护的窗格getPane(){
窗格=新的VBox(10);
窗格。设置填充(新插图(40));
GridPane grid=新建GridPane();
//对于(int i=row-1;i>=0;i-=2){
//对于(int k=col-1;k>=0;i-=1){
对于(int i=0;i
pane.getChildren().add(buttonsArray[i][k]);
为此:

grid.add(buttonsArray[i][k],k,i);
这就是James_D在评论中的建议。

交换意见:

pane.getChildren().add(buttonsArray[i][k]);
为此:

grid.add(buttonsArray[i][k],k,i);

这就是James_D在评论中提出的建议。

正如评论和其他答案中所指出的,您可以使用
网格窗格来实现您想要实现的目标。该代码应该完成这项工作,包括电梯按钮的正确标签:

@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;
    }
@覆盖
公共无效开始(阶段primaryStage){
//获取场景的窗格
setScene(新场景(getPane(),180600));
//搭建舞台
primaryStage.setTitle(“电梯按钮”);
primaryStage.SetResizeable(假);
primaryStage.show();
}
受保护的窗格getPane(){
窗格=新的VBox(10);
窗格。设置填充(新插图(40));
GridPane grid=新建GridPane();
对于(int i=0;i
正如评论和其他答案中所指出的,您可以使用
网格窗格
来实现您想要实现的目标。此代码应该完成这项工作,包括电梯按钮的正确标签:

@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;
    }
@覆盖
公共无效开始(阶段primaryStage){
//获取场景的窗格
setScene(新场景(getPane(),180600));
//搭建舞台
primaryStage.setTitle(“电梯按钮”);
primaryStage.SetResizeable(假);
primaryStage.show();
}
受保护的窗格getPane(){
窗格=新的VBox(10);
窗格。设置填充(新插图(40));
GridPane grid=新建GridPane();
对于(int i=0;i
使用you declare保持按钮,并从
getPane()
方法返回。完全摆脱
VBox
。使用you declare保持按钮,并从
getPane()返回
方法。完全去掉
VBox
。那一个不太管用。这一个似乎能做这个把戏:grid.add(buttonsArray[i][k],k,i);谢谢!!这就是我想要的:P我修改了答案:)那一个不管用。这一个似乎能做这个把戏:grid.add(buttonsArray[i][k],k,i);谢谢!!这就是我想要的:P我修改了答案:)