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