Focus 如何设置';默认值';JavaFX2中的焦点节点?

Focus 如何设置';默认值';JavaFX2中的焦点节点?,focus,javafx-2,Focus,Javafx 2,我正在尝试将我的阶段中的特定节点设置为以键盘为中心的“默认”节点 让我解释一下:我首先在一个可聚焦的节点上调用node.requestFocus(),然后禁用并最终重新启用整个节点的根。完成后,我发现键盘焦点已移动到其他可聚焦节点。我猜另一个节点是“默认”可聚焦节点,即当从禁用状态返回时获得聚焦的节点,其中没有节点可以聚焦。不幸的是,这不是我想要的焦点节点 有人知道在这种情况下控制哪个节点获得键盘焦点的方法吗?事实上,如果有办法让JavaFX记住之前关注的节点并返回到它,那就更好了 就我所记得的

我正在尝试将我的
阶段
中的特定
节点
设置为以键盘为中心的“默认”节点

让我解释一下:我首先在一个可聚焦的
节点上调用
node.requestFocus()
,然后禁用并最终重新启用整个
节点的根。完成后,我发现键盘焦点已移动到其他可聚焦节点。我猜另一个节点是“默认”可聚焦节点,即当从禁用状态返回时获得聚焦的
节点
,其中没有
节点
可以聚焦。不幸的是,这不是我想要的焦点节点


有人知道在这种情况下控制哪个节点获得键盘焦点的方法吗?事实上,如果有办法让JavaFX记住之前关注的节点并返回到它,那就更好了

就我所记得的,没有这样的API,你可以在javafx jira中对此提交RFE,或者尝试查找,可能已经存在这样的API。难道你不能在禁用和重新启用节点的函数之后再次调用你的
节点。requestFocus()
?您甚至可以将需要焦点的节点保存在某个位置,并使用该引用来访问
requestFocus
。您还可以使用
setFocusTraversable(false)
对不需要的项目禁用选项卡式排序,这可能会有所帮助。@blo0p3r:这是一个非常好的主意,除了
node.requestFocus()
还请求包含
节点的
阶段的焦点,当我们更改禁用/重新启用时,可能会导致背景窗口弹出到前面。不过,我相信我也有办法解决这个问题…@Xanatos,我明白了,你会想重新启用后台的一个舞台,通过调用这个重新启用的函数,你不会想让它回到前台吧?@blo0p3r:不明确;更重要的是,如果一个后台阶段真的被重新启用了(比如,一个长时间运行的流程完成了或者什么的),我不希望它不可避免地把这个阶段带到前台。我们在应用程序中一直启用/禁用stage,因此,作为“setEnabled”的副作用出现“toFront”是不可取的。