【发布时间】:2016-05-16 17:50:46
【问题描述】:
我正在根据此处的 Oracle 示例编写一个带有 TreeView 的小型桌面应用程序:https://docs.oracle.com/javafx/2/ui_controls/tree-view.htm。
从 ContextMenu 的 MenuItem 操作,我想触发一个事件,该事件将在我打开 ContextMenu 的项目下方创建一个新的 TreeItem。
对于 MenuItem,可以使用 setOnAction(EventHandler<ActionEvent> event) 方法,但我只想通过单击鼠标左键触发操作。
首先,不能将 EventHandler 添加到 MenuItem,尽管它提供了带有事件类型 MouseEvent.ANY(或其他任何东西)的方法 addEventHandler(EventType type, EventHandler<EventType> handler)。未调用事件处理程序的句柄方法。
其次,我可以通过menuItem.setGraphic(label) 向 MenuItem 添加标签并在标签中添加 EventHandler 来使用解决方法。尽管 MouseEvent.MOUSE_CLICKED 没有被标签上的 EventHandler 的句柄方法调用,但这个方法有效。
这是“正常”行为吗?我知道标签不会对点击事件做出反应,但我不明白为什么不能在 MenuItem 上注册单独的 EventHandler 或 EventFilter。
【问题讨论】: