【问题标题】:JButton getting focused before a JTextFieldJButton 在 JTextField 之前获得焦点
【发布时间】:2013-02-27 19:27:01
【问题描述】:

如您所见,passwordField 在导航器中位于 jButton1 之前,但是,当 usernameField 聚焦时,我按下TAB 键,第二个被聚焦的元素是 jButton1 而不是 passwordField。

真正控制焦点顺序的是什么?

【问题讨论】:

  • 我真的很讨厌使用 GUI-designer 来编写摇摆应用程序 :(
  • 默认焦点转移更多地基于视觉布局,即组件的顺序。在这种情况下,它会想要从左到右,从上到下。这是预期的行为
  • @Eng.Fouad 还有其他建议吗?
  • @Eng.Fouad 这与 GUI 表单编辑器无关,手动编码 UI 会导致相同的行为,这就是 Swing 中默认焦点转移的工作方式
  • @MadProgrammer 我说的是一般情况,作为最佳实践:)

标签: java swing netbeans focus


【解决方案1】:

您需要搜索的短语是“tab order”:here 有答案。简而言之,您需要实现一个FocusTraversalPolicy 子类,并通过调用setFocusTraversalPolicy 让您的容器使用它。

【讨论】:

    【解决方案2】:

    默认焦点转移更多地基于视觉布局组件的顺序。在这种情况下,它会想要从左到右,从上到下。这是预期的行为——MadProgrammer 刚刚编辑

    看看How to use the Focus Subsystem,尤其是Customizing Focus Traversal

    更新

    看看switching JTextFields by pressing Enter key,它演示了自定义焦点策略的使用

    【讨论】:

      【解决方案3】:

      尝试搜索标签索引或标签顺序为组件设置

      【讨论】:

      • 随机api发明?在 swing 组件中没有 set tab order/index 这样的东西
      猜你喜欢
      • 2023-03-10
      • 2015-10-30
      • 1970-01-01
      • 2017-03-12
      • 2014-12-13
      • 2023-04-04
      • 2013-12-25
      • 2014-06-11
      • 2012-12-05
      相关资源
      最近更新 更多