【发布时间】:2018-11-20 13:55:48
【问题描述】:
虽然我可以在没有 FXML 的情况下定义 ContextMenu,但我找不到在 FXML 中定义上下文菜单的好方法:
在源文件中:
ContextMenu contextMenu = new ContextMenu();
contextMenu.getItems().addAll(someMenuItems);
// This runs perfectly
在 FXML 中:
<ContextMenu fx:id="contextMenu">
</ContextMenu>
// This is incorrect in fxml. The Exception of "Unable to coerce javafx.scene.control.ContextMenu to class javafx.scene.Node" is thrown.
<MenuBar fx:id="menuBar">
//... Some Menu and items could be defined here
</MenuBar>
// This is correct in fxml
我知道 MenuBar 可以工作,因为它扩展了 javafx.scene.control.Control,它是 javafx.scene.Node 的子类,但 ContextMenu 没有。
那么有什么方法可以在 FXML 中类似地定义 ContextMenu 的属性吗?
【问题讨论】:
-
我知道有些人更喜欢手动编码 FXML 而不是使用 Scene Builder,但如果不知道如何手动执行某些操作,那么只需使用 Scene Builder 进行该部分,然后查看 FXML 是如何生成的。