FXML控制器中的静态@FXML变量

时间:2014-02-01 19:21:37

标签: fxml javafx-8

我从javafx 8 b109升级到b116,我的FXML控制器类在初始化时将注入的变量设为null。我尝试使用示例netbeans fxml app。

@FXML
private static Label label;

@Override
public void initialize(URL url, ResourceBundle rb) {
    label.setText("static test");
} 

问题在于static关键字,删除它并且它有效。它在b109中使用静态变量工作正常。在最初编写我的应用程序时,我认为静态有意义。它们是在应用程序加载时创建的,并且只有一个场景副本。

如果没有重写使用静态访问的一千行代码,有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:1)

无论如何,我重构了一切,并没有我想象的那么难。当我搜索解决方案时,我花了大约一半的时间进行重构。

我会留下这个问题,以防任何其他可怜的灵魂遇到同样的问题。

答案 1 :(得分:0)

非常感谢你记录这个问题。从昨晚开始,我试着解决它。像你一样,我猜测注入的变量是空的,最终可以形成我的问题,以查询网络的解决方案。我在这里找到你的参赛作品

对于这个问题,我建议一个快速的脏解决方案,我从原始变量名的声明中删除了static关键字,同时我声明了一个静态等价物,它在原始名称的末尾插入一个_字符。在initialize()中,我将注入的对象复制到静态对应物中,而不必重构所有静态内部类和方法。