2017-10-30 9 views
0

2つのカスタムコントロールでFXMLを使用してアプリケーションを作成したいと考えています。@NamedArgsを使用したJavaFXカスタムコントロール:型指定されていないオブジェクトにバインドできません

第1クラスは、コンストラクタ引数を使用して第2クラスへの参照を取得します。これは@NamedArgsアノテーション付きのFXMLでも利用できます。

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

今、私は他のコンポーネントのfx:id@NamedArgsフィールドを参照することにより、FXMLファイルの両方を追加したいです。

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

は、残念ながら、2行目には、次のエラーメッセージで失敗しますjavafx.fxml.LoadException:

によって引き起こさ型なしオブジェクトにバインドすることはできません。

同じ問題を参照している唯一のother questionは、不満足な答えがあります。

答えて

2

あなたがしようとしたコードが動作しない理由を私は知らないが、次のバージョンでは正常に動作するようです:

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

と(あなたがSelectDayControlは、他の場所でFXMLファイルで定義されて必要とする場合)ので、します

<SelectDayControl fx:id="selectDayControl" /> 

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

ありがとう、それは動作します!しかし、私は同じ問題を持つ他の人々のためにいくつかの情報を追加したいと思います: 'SelectDayControl'は* SelectWeekControlの前に*定義しなければならず、2番目の方法は有効ですが、IntelliJは赤で強調し、 – Jibbow

関連する問題