HBox 不可见
HBox not visible
我试试简单的测试
package sample;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
Pane pane = new BorderPane();
pane.setBackground(new Background(new BackgroundFill(Color.RED, CornerRadii.EMPTY, Insets.EMPTY)));
HBox hBox = new HBox();
hBox.setBackground(new Background(new BackgroundFill(Color.GREEN, CornerRadii.EMPTY, Insets.EMPTY)));
hBox.setPrefHeight(100);
hBox.setPrefWidth(100);
pane.getChildren().add(hBox);
primaryStage.setScene(new Scene(pane, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
期望在红色窗格上看到绿色方形 HBox,但只看到红色窗格。
但是如果我直接使用 HBox 作为根视图(将它传递给 new Scene()
),绿色框是可见的。
为什么Pane里面没有HBox?
您正在使用 BorderPane
作为根窗格,并使用
添加您的 HBox
pane.getChildren().add(hBox);
BorderPane
是一个布局窗格,它以特定方式管理其 child 节点的位置和大小。有五个区域,child节点的大小和位置不仅取决于child的min
、pref
、max
个大小,而且在分配 child 的区域上。
对于您发布的代码,由于您根本没有分配区域,因此 HBox
的大小为零。
如果您将 HBox
放在其他区域,您将获得不同的(但不一定是所需的)行为。如果您将 HBox
放在左侧或右侧,HBox
将被指定其首选宽度,但其高度将是边框窗格的完整高度。相反,如果您将它放在顶部或底部,它会被指定其首选高度,但会拉伸边框窗格的整个宽度。 (如果你把它放在中间,它会拉伸边框面板的整个宽度和高度。)
您可能(取决于您正在寻找的确切行为)在这里只需要一个普通窗格:
Pane pane = new Pane();
我试试简单的测试
package sample;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
Pane pane = new BorderPane();
pane.setBackground(new Background(new BackgroundFill(Color.RED, CornerRadii.EMPTY, Insets.EMPTY)));
HBox hBox = new HBox();
hBox.setBackground(new Background(new BackgroundFill(Color.GREEN, CornerRadii.EMPTY, Insets.EMPTY)));
hBox.setPrefHeight(100);
hBox.setPrefWidth(100);
pane.getChildren().add(hBox);
primaryStage.setScene(new Scene(pane, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
期望在红色窗格上看到绿色方形 HBox,但只看到红色窗格。
但是如果我直接使用 HBox 作为根视图(将它传递给 new Scene()
),绿色框是可见的。
为什么Pane里面没有HBox?
您正在使用 BorderPane
作为根窗格,并使用
HBox
pane.getChildren().add(hBox);
BorderPane
是一个布局窗格,它以特定方式管理其 child 节点的位置和大小。有五个区域,child节点的大小和位置不仅取决于child的min
、pref
、max
个大小,而且在分配 child 的区域上。
对于您发布的代码,由于您根本没有分配区域,因此 HBox
的大小为零。
如果您将 HBox
放在其他区域,您将获得不同的(但不一定是所需的)行为。如果您将 HBox
放在左侧或右侧,HBox
将被指定其首选宽度,但其高度将是边框窗格的完整高度。相反,如果您将它放在顶部或底部,它会被指定其首选高度,但会拉伸边框窗格的整个宽度。 (如果你把它放在中间,它会拉伸边框面板的整个宽度和高度。)
您可能(取决于您正在寻找的确切行为)在这里只需要一个普通窗格:
Pane pane = new Pane();