2

'Language'というカスタムクラスがあります。fxmlで次のように定義します。

<Language fx:value="getBundle">
</Language>

言語はObject直接拡張され、JavaFXコンポーネントは拡張されません。明らかに、以下の例外がスローされます。

com.bl.commons.Language@69435をクラスjavafx.scene.Nodeに強制できません

では、どうすればよいですか?私が欲しいのは、私のモーダルのほとんどがそのクラスにありLanguage、fxml自体のメソッドを直接呼び出してコンテンツを設定したいということです。これが不可能な場合、代替手段はありますか?

4

1 に答える 1

5

私の知る限り、他の要素の子のリストに追加するには、クラス何らかの方法で拡張するNode必要があります(これは、FXMLの任意の場所に配置したときに実行することです)。これらの子はとして保存されるためObservableList<Node>です。

これは、特別なことをしなければならないという意味ではなく、次のことを行うだけであることに注意してください。

public class Language extends Node // or StackPane or whatever
{
    public Language()
    {
        super();
        // ...carry on...
    }
}

Languageすでに何か他のものを拡張している場合は、そのクラスを拡張するかNode、クラス階層を再考する必要があります。

于 2013-02-01T16:34:37.643 に答える