我有一个名为'Language'的自定义类,我想在fxml中定义它,如:
<Language fx:value="getBundle">
</Language>
语言直接扩展Object
,而不是任何JavaFX组件。显然它会抛出以下异常:
无法强制com.bl.commons.Language@69435进入类javafx.scene.Node
那我该怎么办?我想要的是,我的大部分模态都在该类中,我想直接调用Language
的方法并在fxml本身中设置内容。如果这不可能那么任何替代方案?
答案 0 :(得分:4)
据我所知,你的班级必须以某种方式扩展Node
才能被添加到其他元素的子列表中(这就是你在做什么的时候)把它放在FXML的任何地方),因为这些孩子存储为ObservableList<Node>
。
请注意,这并不意味着你必须做任何特别的事情,只需这样做:
public class Language extends Node // or StackPane or whatever
{
public Language()
{
super();
// ...carry on...
}
}
如果Language
已经扩展了其他内容,您将希望该类扩展Node
或重新考虑您的类层次结构。