2

我有一个名为“语言”的自定义类,我想在 fxml 中定义它,例如:

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

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

无法将 com.bl.commons.Language@69435 强制转换为 javafx.scene.Node 类

那么我该怎么做呢?我想要的是,我的大部分模式都在那个类中,我想直接调用Languagefxml 本身的方法并设置内容。如果这是不可能的,那么还有其他选择吗?

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