我已经找到了几页关于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
键添加到用于正向遍历的键列表中。 (向后遍历类似)