Javafx TraversalEngine抽象类的利用

Javafx TraversalEngine抽象类的利用,javafx,Javafx,首先,对不起,我英语说得不太好。其次,我对放置在网格窗格中的节点有问题。事实上,如果焦点是由位于左上方的第一个焦点拍摄的,当我按下tab键时,焦点不是由位于右侧的另一个焦点拍摄的。 人们要求我使用traversalEngine抽象类来解决这个问题。尽管如此,当我尝试实现引擎对象时,如果我将web上到处显示的参数放在下面,它将不起作用: TraversalEngine engine = new TraversalEngine(gridPane, false) { 它要求我删除参数。如果我这样做了

首先,对不起,我英语说得不太好。其次,我对放置在网格窗格中的节点有问题。事实上,如果焦点是由位于左上方的第一个焦点拍摄的,当我按下tab键时,焦点不是由位于右侧的另一个焦点拍摄的。 人们要求我使用traversalEngine抽象类来解决这个问题。尽管如此,当我尝试实现引擎对象时,如果我将web上到处显示的参数放在下面,它将不起作用:

TraversalEngine engine = new TraversalEngine(gridPane, false) {
它要求我删除参数。如果我这样做了,我就无法使用trav方法。事实上,出现并可以实现的是getRoot方法:

TraversalEngine engine = new TraversalEngine() {

        @Override
        protected Parent getRoot() {
            // TODO Auto-generated method stub
            return null;
        }   
    }
有什么办法可以解决这个问题吗

谢谢你的帮助


Vinz

父节点中聚焦节点的遍历顺序是它们在子列表中出现的顺序。假设每个子节点最多包含一个可聚焦节点,只需逐行添加子节点或对子节点重新排序即可

当然,这可以通过编程实现,但首先以正确的顺序添加子项会更有效

public static int getColumnIndex(Node n) {
    Integer i = GridPane.getColumnIndex(n);
    return i == null ? 0 : i;
}

public static int getRowIndex(Node n) {
    Integer i = GridPane.getRowIndex(n);
    return i == null ? 0 : i;
}

请阅读并提供所述示例:)感谢您的回答。我明天要试试这个:)。
grid.getChildren().sort(Comparator.comparingInt(ContainingClass::getRowIndex).thenComparingInt(ContainingClass::getColumnIndex));