如何根据子节点

时间:2015-12-13 14:00:58

标签: css javafx resize parent

在JavaFX中,我希望有一个HBox根据其包含的Button子项(父级调整为子级)自动调整其高度和宽度的大小。

默认情况下,现在发生的事情如下: HBox宽度设置为其最大宽度,使其完全适合其父StackPane(子节点调整为父节点)。就像HERE

以下图片描述了我的问题:

发生了什么: ex.1

我需要什么: ex.2

有人会碰巧知道如何使用JavaFX和CSS完成所描述的内容吗?

这些是我的代码的一些片段:

// JavaFX Code
BorderPane mainPane = new BorderPane();

Button button1 = new Button("Button1");
Button button2 = new Button("Button2");
button1.getStyleClass().add("menuButton");
button2.getStyleClass().add("menuButton");
HBox buttonParent = new HBox();
buttonParent.setId("buttonParent");
// buttonParent.autosize();
buttonParent.setAlignment(Pos.TOP_LEFT);
buttonParent.getChildren().addAll(button1, button2);

mainPane.setCenter(parent);

/* CSS Code */
.menuButton {
    -fx-background-size: cover;
    -fx-background-position: center;
    -fx-border-color: #162338;
    -fx-border-width: 1px;
    -fx-pref-width: 100px;
}

#buttonParent {
    -fx-background-color: #000;
    -fx-border-color: #162338;
    -fx-border-radius: 3px;
    -fx-border-insets: -1px;
    -fx-background-radius: 3px;
    -fx-padding: 5px;
}

非常感谢!

2 个答案:

答案 0 :(得分:2)

在JavaFX中,子布局由父布局节点管理。每个布局/窗格都有自己的逻辑来管理其子窗口,并且大多数布局都会考虑子窗口的最大最小值。(/ p>

在您的使用案例中,您可以通过以下方式获得第二张图片中所需的布局:

buttonParent.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE );

这会将父级的大小限制为其子级按钮的组合首选值。此外,buttonParent的父母(即BorderPane)也会考虑其子女的最大规模。

答案 1 :(得分:0)

您尚未提供可执行示例,但我认为将按钮的最大宽度设置为较大值就足够了。