0

假设我有一个 JavaFX 2.x 窗格,其中包含许多节点,包括嵌套节点,散布在绝对位置上。

我想知道鼠标移过任何节点并根据它是什么节点采取一些行动。有没有办法在所有节点上做到这一点,或者我必须在每个节点上单独添加一个鼠标监听器?

4

1 回答 1

0

Afaik 这对于 JavaFX 2.2 中的单个 API 调用是不可能的。现在,如果您不介意额外的工作,您可以做的是:

1)使用 AWTEventListener 跟踪鼠标位置(在 OSX 上可能仍然存在错误)
2)从场景的根目录开始,列出所有子节点,找到包含鼠标位置的 boundsInParent 的子节点。如果没有这样的节点,你就完成了。
3) 如果该节点是父节点,则通过从坐标中删除节点的 x 和 y 位置并将鼠标位置转换为节点,并重复 #2。否则,你就完了。

不是很漂亮,也不是特别快,但是如果您需要该功能来进行调试或在线帮助之类的功能,它可能会起作用。我现在不知道有什么更好的方法。

于 2013-06-09T09:58:38.860 回答