带@NamedArgs的JavaFX自定义控件:无法绑定到无类型对象

时间:2017-10-30 23:40:31

标签: javafx-8 fxml fxmlloader

我想用FXML创建一个带有两个自定义控件的应用程序,其中一个需要引用另一个。

第一个类通过构造函数参数获取对第二个类的引用。这也可以在带有@NamedArgs注释的FXML中使用。

public SelectWeekControl(@NamedArg("dayControl") SelectDayControl selectDayControl) {
    this.selectDayControl = selectDayControl;
    ...
}

现在我想通过引用@NamedArgs字段和其他组件的fx:id来将两者都添加到FXML文件中。

<SelectDayControl fx:id="daySelect"/>
<SelectWeekControl dayControl="${daySelect}" fx:id="weekSelect"/>

不幸的是,第二行失败并显示以下错误消息:

  

引起:javafx.fxml.LoadException:无法绑定到无类型对象。

唯一提到同一问题的other question有一个令人不满意的答案。

1 个答案:

答案 0 :(得分:2)

我不知道为什么你试过的代码不起作用,但以下版本似乎没问题:

<SelectWeekControl fx:id="selectWeekControl">
    <selectDayControl>
        <SelectDayControl fx:id="selectDayControl" />
    </selectDayControl>
</SelectWeekControl>

和(如果你需要FXML文件中其他地方定义的SelectDayControl),那么

<SelectDayControl fx:id="selectDayControl" />

<SelectWeekControl fx:id="selectWeekControl">
    <selectDayControl>
        <fx:reference source="selectDayControl" />
    </selectDayControl>
</SelectWeekControl>