gpt4 book ai didi

JavaFX 按钮垃圾邮件 MouseExit 和 MouseEntered

转载 作者:行者123 更新时间:2023-12-02 09:22:35 25 4
gpt4 key购买 nike

我试图在鼠标进入节点时禁用按钮,并在鼠标离开节点时再次启用它。按钮响应 MouseEvent.ANY,handle 方法获取事件类型并进行相应处理。即使我不移动光标, println 也会显示出恒定的流:

鼠标退出MOUSE_EXITED_TARGETMOUSE_ENTEREDMOUSE_ENTERED_TARGET鼠标退出MOUSE_EXITED_TARGETMOUSE_ENTEREDMOUSE_ENTERED_TARGET鼠标退出MOUSE_EXITED_TARG

这使得按钮闪烁。

public void handle(MouseEvent me) {
System.out.println(me.getEventType());
if(me.getEventType() == MouseEvent.MOUSE_ENTERED_TARGET || me.getEventType() == MouseEvent.MOUSE_MOVED) {
nejButton.setDisable(true);
}
else if((me.getEventType() == MouseEvent.MOUSE_EXITED) || (me.getEventType() == MouseEvent.MOUSE_EXITED_TARGET) )nejButton.setDisable(false);
}

最佳答案

看起来禁用Node意味着鼠标不再被认为在其范围内。这可能有点牵强,但我相信 Node#disabled 记录了这一点。属性:

Indicates whether or not this Node is disabled. A Node will become disabled if disable is set to true on either itself or one of its ancestors in the scene graph.

A disabled Node should render itself differently to indicate its disabled state to the user. Such disabled rendering is dependent on the implementation of the Node. The shape classes contained in javafx.scene.shape do not implement such rendering by default, therefore applications using shapes for handling input must implement appropriate disabled rendering themselves. The user-interface controls defined in javafx.scene.control will implement disabled-sensitive rendering, however.

A disabled Node does not receive mouse or key events. [emphasis added]

我相信,发生的情况是,当您禁用 Node 时,鼠标“退出”,因为所述 Node 不再有资格接收鼠标事件。无论您是否移动鼠标,都会发生这种情况。然后您的代码对鼠标“退出”使用react并启用Node。但是,由于现在启用的 Node 再次有资格接收鼠标事件,并且事实上您将鼠标保持在同一位置,因此鼠标再次“进入”Node 。然后,您的代码会对鼠标“进入”Node 使用react,并再次禁用它,从而导致永无休止的循环。

我怀疑没有办法解决此行为1

话虽这么说,我觉得期望的目标很奇怪。仅当鼠标悬停在按钮上时才禁用 Button ,您想告诉用户什么?似乎会传达“来点击这个按钮......开玩笑吧!”。这似乎不是一个令人愉快的用户体验。

<小时/>

1。由于禁用的节点不会接收鼠标事件,因此有人可能会认为这种行为是一个错误。然而,阻止这种循环的发生对你的情况没有帮助;将鼠标移出按钮不会触发鼠标退出事件,无论是否触发“悬停时禁用”鼠标退出事件。我也倾向于相信这种行为不是一个错误。

关于JavaFX 按钮垃圾邮件 MouseExit 和 MouseEntered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58578737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com