【问题标题】:Cant get pane centered in Borderpane无法使窗格在 Borderpane 中居中
【发布时间】:2015-03-22 05:43:34
【问题描述】:

好的,我正在上一个基本的编程课程,我们必须制作一个包含所有不同窗格的边框窗格。当我尝试在中间放置一个带有“hello”按钮的常规窗格时,该按钮会放在边框窗格的顶部。所有其他窗格我使用的方法是制作 5 个按钮并随机插入一个单词并随机旋转它。我如何让窗格位于中心而不是顶部

    StackPane root = new StackPane();
    Button[] buttons = new Button[5];
    buttons = createButtons();
    root.getChildren().addAll(buttons);

    FlowPane flow = new FlowPane();
    Button[] buttons1 = new Button[5];
    buttons1 = createButtons();
    flow.getChildren().addAll(buttons1);

    HBox hbox= new HBox();
    Button[] buttons2 = new Button[5];
    buttons2 = createButtons();
    hbox.getChildren().addAll(buttons2); 

    VBox vbox = new VBox();
    Button[] buttons3 = new Button[5];
    buttons3 = createButtons();
    vbox.getChildren().addAll(buttons3);

    Pane pane = new Pane();
    Button btn = new Button();
    btn.setText("Hello");
    pane.getChildren().add(btn);

    BorderPane border = new BorderPane();
    border.setBottom(hbox);
    border.setLeft(root);
    border.setRight(vbox);
    border.setTop(flow);
    border.setCenter(pane);
    Scene scene = new Scene(border, 500, 500);

    primaryStage.setTitle("Buttons");
    primaryStage.setScene(scene);
    primaryStage.show();
}

【问题讨论】:

    标签: javafx borderpane


    【解决方案1】:

    您应该添加背景颜色以进行识别,例如。 G。通过 setStyle("-fx-background-color:black)。这样您就可以看到每个窗格的布局。

    例子:

    public class BindIt extends Application {
    
        @Override
        public void start(Stage primaryStage) {
    
            StackPane root = new StackPane();
            root.setStyle("-fx-background-color:red");
            Button[] buttons = new Button[5];
            buttons = createButtons();
            root.getChildren().addAll(buttons);
    
            FlowPane flow = new FlowPane();
            flow.setStyle("-fx-background-color:blue");
            Button[] buttons1 = new Button[5];
            buttons1 = createButtons();
            flow.getChildren().addAll(buttons1);
    
            HBox hbox= new HBox();
            hbox.setStyle("-fx-background-color:green");
            Button[] buttons2 = new Button[5];
            buttons2 = createButtons();
            hbox.getChildren().addAll(buttons2); 
    
            VBox vbox = new VBox();
            vbox.setStyle("-fx-background-color:yellow");
            Button[] buttons3 = new Button[5];
            buttons3 = createButtons();
            vbox.getChildren().addAll(buttons3);
    
            Pane pane = new Pane();
            pane.setStyle("-fx-background-color:cyan");
            Button btn = new Button();
            btn.setText("Hello");
            pane.getChildren().add(btn);
    
            BorderPane border = new BorderPane();
            border.setStyle("-fx-background-color:black");
            border.setBottom(hbox);
            border.setLeft(root);
            border.setRight(vbox);
            border.setTop(flow);
            border.setCenter(pane);
            Scene scene = new Scene(border, 500, 500);
    
            primaryStage.setTitle("Buttons");
            primaryStage.setScene(scene);
            primaryStage.show();
    
        }
    
        private Button[] createButtons() {
            return new Button[] { new Button( "Button") };
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    
    }
    

    它给了你这个:

    现在您看到中心窗格位于中心并填满了中心。问题是按钮不在中心。简单的解决方案是只使用 StackPane 作为中心窗格:

    StackPane pane = new StackPane();
    

    另一种解决方案是将按钮重新定位到中心窗格的中心。但是你必须考虑调整父级的大小。

    【讨论】:

      猜你喜欢
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      相关资源
      最近更新 更多