gpt4 book ai didi

java - 在 FXML 中设置节点layoutProperty()

转载 作者:行者123 更新时间:2023-12-01 09:19:40 25 4
gpt4 key购买 nike

我正在为 javafx 中的项目创建 UI。我使用 CSS 作为样式,使用 FXML 作为结构,还使用 ​​.java Controller 。我试图使我的节点(即按钮、边框 Pane )布局绑定(bind)到场景大小,以便可以调整窗口大小并且布局保持不变。通常,如果节点是在 jar 文件中定义的,我会使用:

button.layoutYProperty().bind((scene.heightProperty().divide(2)));

或类似的东西,但我的节点是在 FXML 文件中定义的。如何从 FXML 文件外部访问节点以便定义布局,或者如何在 FXML 文件内定义布局。(我没有使用也不打算使用场景生成器)。

最佳答案

首先,您永远不需要做这样的事情。如果您使用layout panes您应该始终能够选择布局 Pane 和设置的组合,以根据需要自动定位节点。下面概述的解决方案永远都不需要。

在 Controller 中,您通常无法直接访问场景,因此您需要监听sceneProperty()何时在节点上初始化,并且采取相应行动:

public class Controller {

@FXML
private Button button ;

public void initialize() {

button.sceneProperty().addListener((obs, oldScene, newScene) -> {
button.layoutYProperty().unbind();
if (newScene != null) {
button.layoutYProperty().bind(newScene.heightProperty().divide(2));
}
});

// ...
}
}

但是,这里正确的方法是选择适当的布局 Pane 来实现您想要的。

关于java - 在 FXML 中设置节点layoutProperty(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40249442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com