在Javafx中,mouseReleased事件是否总是在mouseClicked之前发生?

时间:2018-10-21 02:17:54

标签: java events javafx

哪个事件最先触发?是否取决于初始化顺序?是否取决于其他因素?这背后的原理是什么?

pane.setOnMouseClicked(e -> {
    doSomething();
});

pane.setOnMouseReleased(e -> {
    doSomething();
});

1 个答案:

答案 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