【问题标题】:how to keep focus on jframe when jtextfield or button are selected选择jtextfield或按钮时如何将注意力集中在jframe上
【发布时间】:2014-01-15 11:19:56
【问题描述】:

正如标题所说。我试图弄清楚如何将焦点保持在 JFrame 或窗口上。这样当我在键盘上按 F1 时,它会激活一个方法。当我在文本字段中输入时,它也应该这样做。

我已通读“如何使用焦点子系统”,但找不到所需的内容。或者我只是不知道去哪里找。

我尝试使用contentPane.setFocusable(true);,但是当我激活另一个组件时它会失去焦点。那么如何让它保持专注呢?

【问题讨论】:

  • 不要为此使用密钥侦听器;使用键绑定或frame.getRootPane().setDefaultButton()
  • KeyListener 更灵活,您可以映射比 setDefaultButton 更多的响应

标签: java swing jframe jpanel setfocus


【解决方案1】:

您可能正在尝试解决因使用 KeyListener 而导致的错误问题,这需要重点关注。请改用框架根窗格中的key bindingssetDefaultButton()

附录:我试过键绑定,几乎解决了。当JTextField 被选中时,它仍然不起作用。您可能对此有解决方案吗?

根据您的需要,考虑使用DocumentListenerDocumentFilter。有关两者的更多信息,请参阅此Q&A

【讨论】:

  • 一个KeyListener不会带来麻烦...并且可以被多个组件使用
  • @alex2410 再次... KeyListener 不会带来麻烦,键绑定是一个合适的解决方案,但不是唯一的。
  • 感谢您的回复。我同意你的观点,keylistener 不是要走的路。我试过setDefaultButton。但这似乎只适用于一个键(我应该提到我也希望 F2、F3 等工作)。所以我尝试了keyBindings,几乎解决了。选择 JtexField 时它仍然不起作用。您可能对此有解决方案吗?
  • @Slang2856223 这个词是什么??让我听听!!! k k k k ...keeeeeyliiiisteneeersss
  • @Slang2856223:键绑定是更灵活的方法;以上为JTextComponent 子类。
猜你喜欢
  • 2021-06-15
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 2019-01-10
相关资源
最近更新 更多