当按下 Tab 时,Swing 如何确定将焦点更改到哪个组件?这与声明组件的顺序有关吗?创建?添加?他们在屏幕上的绝对位置?或者根本没有可靠的模式?
最佳答案
AWT(或 Swing)FocusManager 使用 FocusTraversalPolicy 来确定下一个获得焦点的组件。
我认为默认的 FocusTraversalPolicy 与外观相关,但在我观察到的地方,它要么是 ContainerOrderFocusTraversalPolicy(它只是按组件在父级中的索引对组件进行排序),要么是 LayoutFocusTraversalPolicy。
最后提到的这个类根据容器的组件位置对它们进行一些排序,粗略地将它们排列成行并逐行遍历它们,并且在行中从左到右(或在 RTL 语言环境中从右到左) 。当使用一些基于网格的布局管理器(例如 GridLayout、GridBagLayout、GroupLayout 等)时,此方法效果最佳。
关于java - Swing 如何确定按下 Tab 时将焦点赋予哪个组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5452309/