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

标签 java css user-interface javafx layout

我需要一些帮助来让组件在我的场景图上缩放。在下图中,我将组件放在顶部,间距合理,一切看起来都很好很正常。

enter image description here

我通过在顶部菜单上设置填充来做到这一点

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

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

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

enter image description here

这是处理组件在最大化窗口时出现问题的顶部部分的代码。 “ 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));
    

    在此示例中,每次最后一个属性更改时,您的按钮 的大小将调整为menuWidthProperty 的1/3。 Here更好地解释。

关于与窗口大小成比例的 Java 组件 (JavaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46006915/

相关文章:

可比较对象列表的 Java 语法

java ssl handshake_failure 问题

javascript - 如何在父 div 中调整子 div 大小时隐藏 div

javascript - 仅使用 jquery 逐渐更改 div 颜色

.net - WPF 中复选框左侧的文本?

java - 如何测试 Web 应用程序?

java - 如何在 Applet 扩展类中调用 paint 方法?

html - 这是 Firefox float 错误吗?

java - EDT 和其他Thread 关系关于repaint() 方法java

python - Kivy - 文本换行工作错误