【问题标题】:HBox not visibleHBox 不可见
【发布时间】:2018-07-01 07:06:35
【问题描述】:

我尝试简单的测试

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?

【问题讨论】:

  • 您是否尝试在 HBox 中添加一些内容,例如: Button button1 = new Button("Button Number 1");按钮 button2 = new Button("按钮编号 2"); HBox hbox = new HBox(button1, button2);

标签: java user-interface javafx javafx-8


【解决方案1】:

您正在使用 BorderPane 作为根窗格,并使用将您的 HBox 添加到其中

pane.getChildren().add(hBox);

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

对于您发布的代码,由于您根本没有分配区域,HBox 的大小为零。

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

您可能(取决于您正在寻找的确切行为)只是想要一个简单的窗格:

Pane pane = new Pane();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2015-10-16
    • 2017-09-26
    • 2017-02-26
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多