在fxml中定义自定义类

时间:2013-02-01 06:31:34

标签: java javafx

我有一个名为'Language'的自定义类,我想在fxml中定义它,如:

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

语言直接扩展Object,而不是任何JavaFX组件。显然它会抛出以下异常:

  

无法强制com.bl.commons.Language@69435进入类javafx.scene.Node

那我该怎么办?我想要的是,我的大部分模态都在该类中,我想直接调用Language的方法并在fxml本身中设置内容。如果这不可能那么任何替代方案?

1 个答案:

答案 0 :(得分:4)

据我所知,你的班级必须以某种方式扩展Node才能被添加到其他元素的子列表中(这就是你在做什么的时候)把它放在FXML的任何地方),因为这些孩子存储为ObservableList<Node>

请注意,这并不意味着你必须做任何特别的事情,只需这样做:

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

如果Language已经扩展了其他内容,您将希望该类扩展Node或重新考虑您的类层次结构。