我需要一些帮助才能在我的场景图上缩放组件。在下图中,我的组件位于顶部,间距很大,一切看起来都很正常。
我是通过使用
在顶部菜单上设置填充来实现的menu.setPadding(new Insets(30,0,30,30));
和 HBox.setMargin(按钮,新的Insets(0,0,0,370)); 表示按钮,其中370是字段和按钮之间的填充。此外,文本字段的首选宽度为400。
然而,当我展开窗口时,我意识到我为文本字段设置的首选宽度不会改变而且它很小,按钮的边距也会改变,所以我不知道如何设置这个数字与窗口大小成正比。我不确定我是用CSS还是简单的java方法解决这个问题。
这是处理组件在最大化窗口时出现问题的顶部的代码。 '窗格'是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);
}
答案 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可以更好地解释。