从不同的控制器引用JavaFX节点

时间:2016-03-03 05:51:30

标签: javafx controller instance fxml

如果活动控制器不是该节点的控制器,是否可以更改JavaFX节点的样式(或任何属性)?

例如,假设我希望能够通过单击按钮来更改AnchorPane的颜色。按钮和AnchorPane有两个不同的控制器。 如何以最简单的方式实现这一目标?

我已经调查过/尝试过使用..

当关注嵌套控制器的文档时,我在成功获取AnchorPane的根节点实例后仍然停滞不前 - 无法弄清楚如何实际更改AnchorPane。

当调用AnchorPane控制器类中应该达到预期效果的函数时,AnchorPane引用将始终返回空指针错误。

2 个答案:

答案 0 :(得分:0)

检查我的答案是否有类似的问题。在控制器之间传递数据是一种迂回,但它可以通过主类。我在这里回答了类似的问题。

Accessing node from outside its controller JavaFX - MVC

有一个链接的教程也很棒我自己学会了如何做到这一点。

答案 1 :(得分:0)

您有多种选择。其中一个是使用与另一个Node相关联的控制器,这在这里有详细描述(如果信息流应该反过来,你可以将父控制器传递并存储到子控制器中) :

Passing Parameters JavaFX FXML

另一种选择是使用css选择器访问另一个节点Node,但这不是干净的设计,因为它打破了封装。

(我在以下示例中假设id的{​​{1}}属性的值为AnchorPane,并且您可以访问"anchorPaneId",这是一个任意节点与您尝试访问的someNodeInTheSameScene相同的场景。)

AnchorPane