onmouseintered不';JavaFX不能正常工作

onmouseintered不';JavaFX不能正常工作,javafx,mouseevent,Javafx,Mouseevent,我在一个窗格上画了一个圆圈和一个文本,我想要的是在光标旁边显示一个文本,当光标位于圆圈上方时,该文本显示为“鼠标位于圆圈上方”,当光标位于圆圈外部时,该文本显示为“鼠标位于圆圈外部”。相反,文本总是说“鼠标在圆外”,但在圆上方的某些位置除外(即使这样,它也会闪回错误的位置)。我还尝试直接从mouseEntered和mouseExited事件设置文本,甚至更糟。我做错了什么?更好的是,是否有其他方法确定光标是否位于某个节点上?另外,如果您能向我解释一下,当我在start方法中移动s的定义时,为什么

我在一个窗格上画了一个圆圈和一个文本,我想要的是在光标旁边显示一个文本,当光标位于圆圈上方时,该文本显示为“鼠标位于圆圈上方”,当光标位于圆圈外部时,该文本显示为“鼠标位于圆圈外部”。相反,文本总是说“鼠标在圆外”,但在圆上方的某些位置除外(即使这样,它也会闪回错误的位置)。我还尝试直接从mouseEntered和mouseExited事件设置文本,甚至更糟。我做错了什么?更好的是,是否有其他方法确定光标是否位于某个节点上?另外,如果您能向我解释一下,当我在start方法中移动s的定义时,为什么会得到一个“lambda表达式中使用的变量应该是有效的final”,那就太好了:)


您正在将文本置于圆圈上方。因此文本接收事件,然后循环。只需将文本重新定位到远离鼠标光标的位置

这就解决了您的问题:

text.setX(e.getX()+20);

或者您可以在文本中使用。

哇,谢谢。你看,我是个笨蛋,我从来没想过。我假设圆圈事件一直都会触发,不管它上面是什么,因为文本不处理任何事件,所以它在哪里没有任何区别。关于我询问如何确定鼠标是否在某个节点上(例如,从一个单独的按键事件)的部分,有什么想法吗?我更新了答案。您还可以对文本使用setMouseTransparent,这样它就不会接收事件。关于决定,我更喜欢使用circle.addEventFilter(MouseEvent.MOUSE_输入,…);
text.setX(e.getX()+20);