在问之前,我应该说可以在JavaFX 中找到答案:如何更改焦点遍历策略?,但我不寻找任何java代码,我想通过编辑Fxml文件的方式
有一个 FXML 文件,其中包含一些 TextField,我想更改我的 TextField 的焦点遍历策略:我的意思是,在应用程序的开头,光标必须位于 id1 中,然后按 TAB 按钮它必须转到id2 等
!!!!ID1-->ID2-->ID3-->ID4-->ID5-->ID6 !!!
请注意,我的 TextField 的位置应该如下图所示。
因此,为此我更改了 FXML 文件中 textFields 的顺序:
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<TextField fx:id="id1" layoutX="401.0" layoutY="41.0" promptText="id1" />
<TextField fx:id="id2" layoutX="168.0" layoutY="41.0" promptText="id2" />
<TextField fx:id="id3" layoutX="401.0" layoutY="110.0" promptText="id3" />
<TextField fx:id="id4" layoutX="168.0" layoutY="110.0" promptText="id4" />
<TextField fx:id="id5" layoutX="401.0" layoutY="174.0" promptText="id5" />
<TextField fx:id="id6" layoutX="401.0" layoutY="249.0" promptText="id6" />
</children>
</AnchorPane>
它对我来说很好,但现在我遇到了一个大问题,当我在 HBox 中包装两个 TextField( Id1 和 Id2 )时。这种方法没有给我正确的结果,并且焦点遍历的顺序已经改变。
修改后的 FXML 如下:
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Bank.LayoutController">
<children>
<HBox layoutX="168.0" layoutY="41.0" spacing="80.0">
<children>
<TextField fx:id="id2" layoutX="168.0" layoutY="41.0" promptText="id2" />
<TextField fx:id="id1" layoutX="401.0" layoutY="41.0" promptText="id1" />
</children>
</HBox>
<TextField fx:id="id3" layoutX="401.0" layoutY="110.0" promptText="id3" />
<TextField fx:id="id4" layoutX="168.0" layoutY="110.0" promptText="id4" />
<TextField fx:id="id5" layoutX="401.0" layoutY="174.0" promptText="id5" />
<TextField fx:id="id6" layoutX="401.0" layoutY="249.0" promptText="id6" />
</children>
</AnchorPane>
结果的屏幕截图如下图所示(如您所见,凝视点已更改为 id2,然后按 Tab 键将光标转到 id1... !!!! ID2-->ID1-->ID3-- >ID4-->ID5-->ID5 !!! )
所以 !?!?当用户单击 TAB 时,如何更改我的 TextField 的焦点遍历。
如果你只有一个 anchorPane 似乎很容易,但如果你有 HBox 它从右侧开始到左侧。
默认情况下,当按下 tab 键时,焦点转移(向右)到下一个组件,但正如我提到的,我想要从左到右!
有什么解决办法吗?