在Javafx中,MouseRelease事件是否总是在MouseClick之前发生?

在Javafx中,MouseRelease事件是否总是在MouseClick之前发生?,java,events,javafx,Java,Events,Javafx,哪个事件先触发?它是否取决于初始化顺序?这取决于其他因素吗?这背后的原则是什么 pane.setOnMouseClicked(e -> { doSomething(); }); pane.setOnMouseReleased(e -> { doSomething(); }); 实际上,您正在将事件处理程序添加到节点,该节点处理特定类型的MouseEvent。(也看一看) 如果您查看MouseEvent文档,您将看到: 按下鼠标 publicstaticfinale

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

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

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

实际上,您正在将事件处理程序添加到
节点
,该节点处理特定类型的
MouseEvent
。(也看一看)

如果您查看
MouseEvent
文档,您将看到:

按下鼠标

publicstaticfinaleventtype鼠标按下

按下鼠标按钮时发生此事件。这会激活一个 按拖动释放手势,使所有后续鼠标事件 按钮被释放,并传递到同一节点

释放鼠标\u

publicstaticfinaleventtype鼠标发布

释放鼠标按钮时发生此事件。它被送到 按钮被按下的节点激活了 按拖动释放手势

单击鼠标

publicstaticfinaleventtype鼠标单击

单击鼠标按钮(并按下)时发生此事件 在同一节点上发布)。此事件提供类似按钮的行为 到任何节点。请注意,即使长时间拖动也会生成单击事件(它是 传递到同时按下鼠标和鼠标的最顶端节点 发布)

因此,要回答您的问题,是的,事件的顺序始终是:

MOUSE_PRESSED ->  MOUSE_RELEASED -> MOUSE_CLICKED

您可以尝试在这些事件处理程序中打印到控制台,并找出哪个首先被触发:)我已经这样做了,但我想得到一个解释