Хотя я мог бы определить ContextMenu без FXML, я не нашел хорошего способа определить контекстное меню в 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 этого не делает.
Так есть ли способ определить свойства ContextMenu аналогичным образом в FXML?