无法将窗格置于Borderpane中心

时间:2015-03-22 05:43:35

标签: javafx borderpane

好的,所以我在基础编程课中,我们必须制作一个包含所有不同窗格的边框。当我尝试在中心放置一个常规窗格时,里面有一个“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();
}

1 个答案:

答案 0 :(得分:0)

您应该添加背景颜色以进行识别,例如: 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);
    }

}

它给你这个:

enter image description here

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

StackPane pane = new StackPane();

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