哪个事件最先触发?是否取决于初始化顺序?是否取决于其他因素?这背后的原理是什么?
pane.setOnMouseClicked(e -> {
doSomething();
});
pane.setOnMouseReleased(e -> {
doSomething();
});
答案 0 :(得分:5)
您实际上是在向Node
添加一个事件处理程序,该事件处理程序可以处理MouseEvent
的特定类型。 (还要看看Handling JavaFX Events)
如果您查看MouseEvent
文档,则会看到:
MOUSE_PRESSED
public static final EventType<MouseEvent> MOUSE_PRESSED
按下鼠标按钮时发生此事件。这激活了 按下并释放手势,因此所有后续鼠标事件直到 按钮释放后传递到同一节点。
MOUSE_RELEASED
public static final EventType<MouseEvent> MOUSE_RELEASED
释放鼠标按钮时,将发生此事件。交付给 按下按钮的同一节点激活了一个 按下释放手势。
MOUSE_CLICKED
public static final EventType<MouseEvent> MOUSE_CLICKED
单击鼠标按钮( 在同一节点上发布)。此事件提供类似按钮的行为 到任何节点。请注意,即使长时间拖动也会产生点击事件( 传递到同时按下鼠标和 已发布)。
是的,为了回答您的问题,事件的顺序始终是:
MOUSE_PRESSED -> MOUSE_RELEASED -> MOUSE_CLICKED