可调整大小的Gridpane或其他容器

时间:2015-12-31 11:25:00

标签: javafx javafx-8

您好我尝试使用JavaFX创建一个看起来像这样的简单布局。

enter image description here

我希望用户能够拖动/调整中间栏的大小。我曾尝试使用GridPane进行此操作。但我无法弄清楚如何调整中间位置。也许GridPane不是要走的路。这两个窗格稍后将包含许多其他程序代码。谢谢!

Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
    stageRef.setMaxWidth(primaryScreenBounds.getWidth());
    stageRef.setMaxHeight(primaryScreenBounds.getHeight());

    GridPane gridPane = new GridPane();
    gridPane.setGridLinesVisible(true);
    gridPane.setPadding(new Insets(10));

    Scene scene = new Scene(gridPane);

    VBox vBoxMain = new VBox();
    vBoxMain.setPrefWidth((primaryScreenBounds.getWidth()/5)*4);
    vBoxMain.setPrefHeight(primaryScreenBounds.getHeight());
    TextArea textArea = new TextArea();
    textArea.setWrapText(true);
    textArea.setPrefHeight(primaryScreenBounds.getHeight());
    vBoxMain.getChildren().addAll(textArea);
    vBoxMain.isResizable();

    VBox vBoxSide = new VBox();
    vBoxSide.setPrefWidth((primaryScreenBounds.getWidth()/5));
    vBoxSide.setPrefHeight(primaryScreenBounds.getHeight());
    vBoxSide.isResizable();

    gridPane.add(vBoxSide, 1,1,1,1);
    gridPane.add(vBoxMain, 2,1,4,1);

    stageRef.setScene(scene);
    stageRef.show();

Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds(); stageRef.setMaxWidth(primaryScreenBounds.getWidth()); stageRef.setMaxHeight(primaryScreenBounds.getHeight()); GridPane gridPane = new GridPane(); gridPane.setGridLinesVisible(true); gridPane.setPadding(new Insets(10)); Scene scene = new Scene(gridPane); VBox vBoxMain = new VBox(); vBoxMain.setPrefWidth((primaryScreenBounds.getWidth()/5)*4); vBoxMain.setPrefHeight(primaryScreenBounds.getHeight()); TextArea textArea = new TextArea(); textArea.setWrapText(true); textArea.setPrefHeight(primaryScreenBounds.getHeight()); vBoxMain.getChildren().addAll(textArea); vBoxMain.isResizable(); VBox vBoxSide = new VBox(); vBoxSide.setPrefWidth((primaryScreenBounds.getWidth()/5)); vBoxSide.setPrefHeight(primaryScreenBounds.getHeight()); vBoxSide.isResizable(); gridPane.add(vBoxSide, 1,1,1,1); gridPane.add(vBoxMain, 2,1,4,1); stageRef.setScene(scene); stageRef.show();

1 个答案:

答案 0 :(得分:2)

您可以使用SplitPane

  

具有两个或更多个边的控件,每个边用分隔符分隔,   可以由用户拖动,以给其中一个提供更多空间   双方,导致另一方萎缩相等。

然后在此窗格中添加另外两个容器,允许用户更改分隔符的位置。您还可以为窗格中的每个组件设置最小宽度,或在代码中设置每个分隔符的位置。