我正在写一个带有TreeView的桌面应用程序,根据这里的Oracle示例:https://docs.oracle.com/javafx/2/ui_controls/tree-view.htm。JavaFX MenuItem对MouseEvent.CLICKED没有反应
从ContextMenu的MenuItem动作中,我想触发一个事件,该事件将在打开ContextMenu的项目下创建一个新的TreeItem。
对于MenuItem,可以使用setOnAction(EventHandler<ActionEvent> event)
方法,但我只想通过鼠标左键点击该操作。
首先,尽管它为方法addEventHandler(EventType type, EventHandler<EventType> handler)
提供了事件类型MouseEvent.ANY(或其他),但不能将EventHandler添加到MenuItem。不调用事件处理程序的句柄方法。
其次,我可以通过在菜单项上添加一个标签0123'并添加一个EventHandler到标签来使用workarround。虽然MouseEvent.MOUSE_CLICKED
不是由EventHandler的标签上的句柄方法调用的,但它可以工作。
这是“正常的”行为吗?我知道标签不会对点击事件做出反应,但我不明白为什么无法在MenuItem上注册单独的EventHandler或EventFilter。
您的解决方案也适用于我,谢谢。看起来这个API并不是100%清晰的,因为packackge javafx.scene.control中的许多控件都可以处理单独的EventHandler和EventFilter。 – Supahupe