我需要一些帮助来让组件在我的场景图上缩放。在下图中,我将组件放在顶部,间距合理,一切看起来都很好很正常。
我通过在顶部菜单上设置填充来做到这一点
menu.setPadding(new Insets(30, 0, 30, 30));
和 HBox.setMargin(button, new Insets(0,0,0,370)); 对于按钮,其中 370 是字段和按钮之间的填充。此外,文本字段的首选宽度为 400。
但是,当我展开窗口时,我意识到我为文本字段设置的首选宽度不会改变而且很小,按钮的边距也会改变,所以我不知道如何按比例设置这个数字到窗口的大小。我不确定我是用 CSS 还是简单的 java 方法来解决这个问题。
这是处理组件在最大化窗口时出现问题的顶部部分的代码。 “ Pane ”是 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);
}
最佳答案
你有两种方式:
第一个最简单但也不太灵活:
HBox.setHgrow(button, Priority.ALWAYS); HBox.setHgrow(tf, Priority.ALWAYS);
指定
Priority
,您可以决定如何填充组件和HBox
之间的额外空间。使用
Property
绑定(bind):button.prefWidthProperty().bind(menu.widthProperty().divide(3));
在此示例中,每次最后一个属性更改时,您的
按钮
的大小将调整为menu
的WidthProperty
的1/3。 Here更好地解释。
关于与窗口大小成比例的 Java 组件 (JavaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46006915/