如何防止JavaFX ContextMenu项目集中在按下TAB键?

时间:2015-05-11 11:48:46

标签: javafx-8

我有一些TextFields。当我按TAB键时,我想转到下一个TextField。 当未显示与TextField关联的ContextMenu时,此方法正常工作。显示ContextMenu时,按TAB键将项目聚焦在ContextMenu中。我不想要那种行为。

我试过了:

setAllChildrendTraversable(false, ((Parent) tf.getContextMenu().getSkin().getNode()).getChildrenUnmodifiable());

//...

    static void setAllChildrendTraversable(boolean traversable, ObservableList<Node> childs) {
        for(Node node : childs) {
            if(node instanceof Parent) setAllChildrendTraversable(traversable, ((Parent) node).getChildrenUnmodifiable());
            else node.setFocusTraversable(traversable);
        }
    }

但它没有给出想要的结果。

这是访问ContextMenu中所有节点的正确方法吗? 或者,我解决这个问题的方法是错误的吗?

1 个答案:

答案 0 :(得分:0)

但这确实......:

setAllChildrendTraversable(false, ((Parent) tf.getContextMenu().getSkin().getNode()).getChildrenUnmodifiable());

//...

    static void setAllChildrendTraversable(boolean traversable, ObservableList<Node> childs) {
        for(Node node : childs) {
            if(node instanceof Parent) setAllChildrendTraversable(traversable, ((Parent) node).getChildrenUnmodifiable());
            node.setFocusTraversable(traversable);
        }
    }

我只需删除else关键字...

为了让你失去一些时间。