我有一个名为“Language”的自定义类,我想在 fxml 中定义它,如下所示:
<Language fx:value="getBundle">
</Language>
语言扩展Object
直接而不是任何 JavaFX 组件。显然它会抛出以下异常:
Unable to coerce com.bl.commons.Language@69435 to class javafx.scene.Node
那么我该怎么做呢?我想要的是,我的大部分模态都在那个类中,我想直接调用 Language
的方法并在 fxml 本身中设置内容。如果这不可能,那么还有其他选择吗?
最佳答案
据我所知,您的类(class)必须扩展 Node
以某种方式添加到其他元素的子元素列表中(这就是将其放在 FXML 中的任何位置时所做的操作),因为这些子元素存储为 ObservableList<Node>
.
请注意,这并不意味着您必须做任何特别的事情,只需执行以下操作即可:
public class Language extends Node // or StackPane or whatever
{
public Language()
{
super();
// ...carry on...
}
}
如果Language
已经扩展了其他一些你想要扩展该类的东西 Node
或者重新考虑你的类层次结构。
关于java - 在 fxml 中定义您的自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14640959/