【问题标题】:How to catch Enter key and change event to Tab in Java如何在 Java 中捕获 Enter 键并将事件更改为 Tab
【发布时间】:2012-08-14 22:25:56
【问题描述】:

我有一个带有多个 jtextfield 的 swing 应用程序。你如何替换回车键的功能,当你按下回车键时,它会像 tab 键一样转移到下一个焦点组件?我不想在每个 jtextfield 上放置一个 keylistener。

【问题讨论】:

  • 您真的想替换默认操作(即通知其操作/侦听器,又名:提交)?还是commit + focusTransfer?
  • 我希望我的程序发生的是,在我用该字段所需的数据填充 jtextfield 后,我将按 Enter 然后焦点将跳转到第二个 jtextfield(我指定为下一个可聚焦组件)就像你按下 tab 键一样。

标签: java swing keylistener


【解决方案1】:

你正在寻找Container.setFocusTraversalKeys:

Container root = ...
// pressed TAB, control pressed TAB
Set<AWTKeyStroke> defaultKeys = root.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
// since defaultKeys is unmodifiable
Set<AWTKeyStroke> newKeys = new HashSet<>(defaultKeys); 
newKeys.add(KeyStroke.getKeyStroke("pressed ENTER"));
root.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newKeys);

欲了解更多信息,请查看Focus Subsystem tutorial

【讨论】:

    【解决方案2】:

    您可以致电:

    KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
    manager.focusNextComponent();
    

    但您必须在所有 JTextField 中注册一个 ActionListener。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-21
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 2021-09-21
      相关资源
      最近更新 更多