2017-09-13 37 views
0

我试图创建JavaFX中键盘友好的应用程序。我需要在整个场景中管理Tab键,并且需要禁用tab-stop的一些点头(TextFields,Button)。如何programically改变tabkey停止索引和禁用的JavaFX

在我的研究,我结识实现按键按下事件的每一个节点。有没有简单的方法来做到这一点?

private void OnKeyPressed_MContainer(KeyEvent event) { 

    if (event.getCode().equals(KeyCode.TAB)) { 

    } 

} 
+0

如果你需要想实现的是禁止在某些节点上制表位,看看[focusTraversable](https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html #focusTraversableProperty)。否则请澄清。 – Itai

+0

感谢您的'setFocusTraversable(布尔)'。是什么叫TabKeyIndex?如果是这样,AFAIK的标签索引是通过将控制到场景(如果装有'FXMLLoader'它们出现在FXML顺序)的顺序来确定余云设置的tabindex像1,2,3 – Labeeb

+0

。我似乎记得有计划在未来允许公共接口对此有更多的控制权,但目前我找不到JDK问题。 – Itai

回答

1

JavaFX event processing由两部分组成。首先是事件捕捉阶段,其中事件从根部向下“向下”,然后事件冒泡,然后返回到“根”。为了捕获节点的所有子节点上的事件,您可以使用event filters来捕获该事件。然后,您不必在所有子节点上添加处理程序。

这回答了你的问题,但我个人觉得应该有更好的方式来做到这一点比处理自己的标签事件。

+0

感谢您的答案。这减少了近32行我的代码。但我应该有更简单的方法。 – Labeeb

+0

也许它是某种辅助功能的一部分,因为使用键盘进行导航可以在没有鼠标的情况下进行访问。只是想到了它。 – findusl

相关问题