与窗口大小成比例的Java组件(JavaFX)

时间:2017-09-01 19:34:57

标签: java css user-interface javafx layout

我需要一些帮助才能在我的场景图上缩放组件。在下图中,我的组件位于顶部,间距很大,一切看起来都很正常。

enter image description here

我是通过使用

在顶部菜单上设置填充来实现的

menu.setPadding(new Insets(30,0,30,30));

HBox.setMargin(按钮,新的Insets(0,0,0,370)); 表示按钮,其中370是字段和按钮之间的填充。此外,文本字段的首选宽度为400。

然而,当我展开窗口时,我意识到我为文本字段设置的首选宽度不会改变而且它很小,按钮的边距也会改变,所以我不知道如何设置这个数字与窗口大小成正比。我不确定我是用CSS还是简单的java方法解决这个问题。

enter image description here

这是处理组件在最大化窗口时出现问题的顶部的代码。 '窗格'是BorderPane的一个实例。

private void setTopMenu() {

 menu = new HBox();
 menu.setPadding(new Insets(30, 0, 30, 30));

 button = new Button("ABCD ABCD ABCD"); 

 tf = new TextField();
 tf.setPromptText("search"); 
 tf.setPrefWidth(400);
 tf.setId("text-field");

 top.getChildren().addAll(tf, button);

 HBox.setMargin(button, new Insets(0,0,0,370));

 pane.setTop(menu);
}

1 个答案:

答案 0 :(得分:1)

您有两种方式:

  • 第一个是最简单的但也不那么灵活:

    HBox.setHgrow(button, Priority.ALWAYS);
    HBox.setHgrow(tf, Priority.ALWAYS);
    

    指定Priority您可以决定如何填充组件与HBox之间的额外空间。

  • 使用Property绑定:

    button.prefWidthProperty().bind(menu.widthProperty().divide(3));
    

    在此示例中,每当此最后一个属性发生更改时,您的button将调整为menu的{​​{1}}的1/3。 Here可以更好地解释。