java - 禁用遍历键时如何将焦点转移到自定义组件?

标签 java swing focus jcombobox key-bindings

我创建了一个自定义 JComboBox,其中包含实现 KeyListener 的自定义弹出窗口。我希望在按下 TabEnter 时从 cmbBox 的弹出窗口中选择一个项目,因此我设置了 setFocusTraversalKeysEnabled(false)对于组合框和弹出窗口。

这种方法的问题是,现在当我在容器中使用它时,我必须向组合框添加另一个 KeyListener 以便转移焦点。

我可以在我的自定义 JComponent 中触发转移焦点事件(假设)或类似的事件,该事件将在其父组件中转移焦点,这样我就不必在使用它的任何地方添加关键监听器。我使用了 transferFocus() 但它没有转移焦点。

我没有弄脏Key Bindings但是有没有键绑定(bind)来转移焦点?

谢谢

我正在尝试重新创建 sscce,但事实证明这很困难。请多多包涵。

最佳答案

基本监听器的生命周期就是如果确实需要的话就添加需要的监听器,如果没有用的话就删除监听器

  • 我建议使用 KeyBindings,因为此监听器是为 Swing JComponent 指定的,并且确保您可以(当然与 KeyListener 相同)将此监听器添加到具体的 JComponent 或其衍生物

  • 您可以将监听器添加到 firePopupMenuWillBecomeVisible 上的派生弹出窗口

  • 您可以将 ItemListener 添加到派生的 JList

  • 也许不是正确的方式,但保护所有人 defects implemented to the KeyListener ,只有 Focus 所有者才能从键盘获取事件,这是 KeyBindings 操作系统的可靠解决方法,更可设置且更舒适

通知please read this answer

关于java - 禁用遍历键时如何将焦点转移到自定义组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113698/

相关文章:

java - 我们可以在 Eclipse 3.7.2 的 Equinox 插件中使用 java 8 功能吗?

java - 保护 apache CXF REST 和 SOAP 服务并在代码中检索权限

java - 适用于 Windows 的最小可执行文件

java - 忽略从轻量级组件生成的 AWT 组件上的 Java 鼠标事件

java - JFileChooser 不会死?

用户未选择文件时 JAVA 禁用按钮

jquery - 失去焦点时隐藏分区

java - 找不到类型 : java. lang.Object 的 validator

c# - Uwp导航示例和焦点控制

jQuery:如何知道表格行何时失去焦点?