首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HBox不可见

HBox不可见
EN

Stack Overflow用户
提问于 2018-01-22 23:37:10
回答 1查看 730关注 0票数 1

我尝试简单的测试

代码语言:javascript
复制
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()),绿色框是可见的。

为什么窗格中缺少HBox?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-22 23:44:59

您正在使用BorderPane作为根窗格,并使用以下命令向其添加HBox

代码语言:javascript
复制
pane.getChildren().add(hBox);

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

在您发布的代码中,因为您根本没有分配区域,所以HBox的大小为零。

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

您可能(根据您正在寻找的确切行为)只想要一个普通的窗格:

代码语言:javascript
复制
Pane pane = new Pane();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48385174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档