java - Swing 如何确定按下 Tab 时将焦点赋予哪个组件?

标签 java swing

当按下 Tab 时,Swing 如何确定将焦点更改到哪个组件?这与声明组件的顺序有关吗?创建?添加?他们在屏幕上的绝对位置?或者根本没有可靠的模式?

最佳答案

AWT(或 Swing)FocusManager 使用 FocusTraversalPolicy 来确定下一个获得焦点的组件。

我认为默认的 FocusTraversalPolicy 与外观相关,但在我观察到的地方,它要么是 ContainerOrderFocusTraversalPolicy(它只是按组件在父级中的索引对组件进行排序),要么是 LayoutFocusTraversalPolicy。

最后提到的这个类根据容器的组件位置对它们进行一些排序,粗略地将它们排列成行并逐行遍历它们,并且在行中从左到右(或在 RTL 语言环境中从右到左) 。当使用一些基于网格的布局管理器(例如 GridLayout、GridBagLayout、GroupLayout 等)时,此方法效果最佳。

关于java - Swing 如何确定按下 Tab 时将焦点赋予哪个组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5452309/

相关文章:

带有 if else 语句的 Java Scanner 输入

java - 如何在调用另一个 JFrame 时删除一个 JFrame

java - 在 Java 中同时使用鼠标监听器和按键监听器

java - 从 JLabel 中选择文本?

java.lang.NoClassDefFoundError : io/jsonwebtoken/SignatureAlgorithm

java - 如何模拟并行运行的线程之间的竞争?

java - 使用 jSoup 或其他库执行 JavaScript 后解析 HTML DOM

java - 调用 SwingWorker.get( ) 时防止 GUI 卡住

java - JButton 无法在 actionListener 内解析

java - 将 JLabel 添加到 JMapViewer