我已经找到了几页关于Java中作为选项卡输入问题的页面和SO答案,但是都提出了JTextField的重写方法或向每个组件添加键侦听器。

但是没有其他办法了吗?我不能覆盖LookAndFeel的某些内容或安装某些全局策略吗?

最佳答案

在搜寻了一些文档之后,我找到了一个解决方案:可以在KeyboardFocusManager而不是JComponent实例上设置焦点遍历键。

// 1. Get default keys
Set<AWTKeyStroke> ftk = new HashSet<AWTKeyStroke>(
        KeyboardFocusManager.getCurrentKeyboardFocusManager()
        .getDefaultFocusTraversalKeys(
        KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));

// 2. Add our key
ftk.add(KeyStroke.getKeyStroke("ENTER"));

// 3. Set new keys
KeyboardFocusManager.getCurrentKeyboardFocusManager()
        .setDefaultFocusTraversalKeys(
        KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, ftk);


这会将enter键添加到用于正向遍历的键列表中。 (向后遍历类似)

07-27 23:30