JavaFX:setHgrow(…)不';行不通

JavaFX:setHgrow(…)不';行不通,java,javafx,vbox,hbox,Java,Javafx,Vbox,Hbox,我无法使HBox中的元素增长,因此我从下载了以下示例代码。这是一个最小的不起作用的例子: package fxtest; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.cont

我无法使HBox中的元素增长,因此我从下载了以下示例代码。这是一个最小的不起作用的例子:

package fxtest;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Fxtest extends Application {
    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("");
        Group root = new Group();
        Scene scene = new Scene(root, 600, 250, Color.WHITE);

        HBox hbox = new HBox();
        TextField field = new TextField();
        HBox.setHgrow(field, Priority.ALWAYS);
        hbox.getChildren().addAll(new Label("Search:"), field, new Button("Go"));


        root.getChildren().add(hbox);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
结果看起来是这样的

如果我理解正确,文本字段应该增长,不是吗

我的Java版本是1.7.0_51

我的JavaFX版本是2.2.51-b13

你知道为什么它不起作用/我必须做什么吗? 谢谢

为什么不适合你

使用a作为场景的根节点,并且组的大小不可调整,因此组的大小不会调整为场景的大小

一个群体将承担其子女的集体界限,而不是 可直接调整大小

默认情况下,组将“自动调整”其托管组的大小 布局过程中,可将子对象调整为其首选大小

通常,您很少希望将组用作场景的根节点

如何修复它

仅在场景中使用可调整大小的节点(子类或子类)

样本

使用以下方法替换“开始”方法,该方法删除组根节点,并使HBox成为场景的根节点:

public void start(Stage primaryStage) {
    HBox hbox = new HBox(10);
    TextField field = new TextField();
    HBox.setHgrow(field, Priority.ALWAYS);
    hbox.setAlignment(Pos.BASELINE_LEFT);
    hbox.getChildren().addAll(
        new Label("Search:"), field, new Button("Go")
    );
    hbox.setPadding(new Insets(10));

    Scene scene = new Scene(hbox, 600, 250, Color.WHITE);
    primaryStage.setScene(scene);
    primaryStage.show();
}
调整窗口大小后的示例输出(您可以看到搜索文本字段会根据请求增减以适应可用空间):


jewelsea为给定示例提供了正确答案;谢谢你

它帮助我找出了一个症状相似但根源不同的问题。 如果使用滚动窗格,则需要设置

    scrollPane.setFitToHeight(true);
    scrollPane.setFitToWidth(true);

为了获得理想的生长效果。

各位空头:
Hbox.setHgrow
!=<代码>hbox.setHgrow