如何根据其子节点自动调整父节点的大小
How to auto resize the parent node according to its children
在 JavaFX 中,我希望有一个 HBox 可以根据其包含的 Button 子项自动调整其高度和宽度(父项调整为子项)。
默认情况下,现在发生的情况如下:
HBox-width 设置为其最大宽度,使其完全适合其父级 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;
}
非常感谢!
在 JavaFX 中,子布局由父布局节点管理。每个 layout/pane 都有自己的逻辑来管理其子项,因此这些布局中的大多数在布局时都会考虑子项的最大最小偏好值。
在您的用例中,您可以通过以下方式在第二张图片中获得所需的布局:
buttonParent.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE );
这会将父按钮的大小限制为其子按钮的组合首选值。此外,buttonParent
的父级(即 BorderPane)也会考虑其子级的最大尺寸。
在 JavaFX 中,我希望有一个 HBox 可以根据其包含的 Button 子项自动调整其高度和宽度(父项调整为子项)。
默认情况下,现在发生的情况如下: HBox-width 设置为其最大宽度,使其完全适合其父级 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;
}
非常感谢!
在 JavaFX 中,子布局由父布局节点管理。每个 layout/pane 都有自己的逻辑来管理其子项,因此这些布局中的大多数在布局时都会考虑子项的最大最小偏好值。
在您的用例中,您可以通过以下方式在第二张图片中获得所需的布局:
buttonParent.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE );
这会将父按钮的大小限制为其子按钮的组合首选值。此外,buttonParent
的父级(即 BorderPane)也会考虑其子级的最大尺寸。