在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;
}
非常感谢!
答案 0 :(得分:2)
在JavaFX中,子布局由父布局节点管理。每个布局/窗格都有自己的逻辑来管理其子窗口,并且大多数布局都会考虑子窗口的最大最小值。(/ p>
在您的使用案例中,您可以通过以下方式获得第二张图片中所需的布局:
buttonParent.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE );
这会将父级的大小限制为其子级按钮的组合首选值。此外,buttonParent
的父母(即BorderPane)也会考虑其子女的最大规模。
答案 1 :(得分:0)
您尚未提供可执行示例,但我认为将按钮的最大宽度设置为较大值就足够了。