我想用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有一个令人不满意的答案。
答案 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>