gpt4 book ai didi

java - HBox 不可见

转载 作者:行者123 更新时间:2023-11-30 02:16:05 25 4
gpt4 key购买 nike

我尝试简单的测试

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);
}
}

期望在红色 Pane 上看到绿色方形 HBox,但只看到红色 Pane 。但如果我直接使用 HBox 作为 Root View (将其传递给 new Scene()),则绿色框可见。

为什么 Pane 中缺少 HBox?

最佳答案

您使用 BorderPane 作为根 Pane ,并使用 HBox 添加到其中

pane.getChildren().add(hBox);

BorderPane 是一个布局 Pane ,它以特定方式管理其子节点的位置和大小。有五个区域,子节点的大小和位置不仅取决于子节点的 minprefmax 大小,还包括子项分配到的区域。

就您发布的代码而言,由于您根本没有分配区域,因此 HBox 的大小为零。

如果将 HBox 放置在其他区域,您将获得不同的(但不一定是所需的)行为。如果将 HBox 放置在左侧或右侧,则 HBox 将被分配其首选宽度,但其高度将是边框 Pane 的完整高度。相反,如果将其放置在顶部或底部,它将被分配其首选高度,但会拉伸(stretch)边框 Pane 的整个宽度。 (如果将其放置在中心,它将拉伸(stretch)边框 Pane 的整个宽度和高度。)

您可能(取决于您正在寻找的具体行为)只需要一个普通的 Pane :

Pane pane = new Pane();

关于java - HBox 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48385174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com