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

JavaFX custom controls with @NamedArgs: Cannot bind to untyped object

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

第一个 class 通过构造函数参数获取对第二个 class 的引用。这在带有 @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"/>

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

Caused by: javafx.fxml.LoadException: Cannot bind to untyped object.

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

我不知道为什么你试过的代码不起作用,但以下版本似乎可以正常工作:

<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>