扩展 JTable 中的键绑定
Extend keybindings in JTable
将 F4 的绑定添加到面板内的 JTable
后,TAB 的标准行为停止工作。当前单元格进入编辑模式,而不是预期的跳转到下一个单元格。
使用 ActionMap
/InputMap
或将 KeyListener
添加到 table
时会发生这种情况
ActionMap map = new ActionMap();
map.put("f4Action", new F4Action());
map.setParent(this.getActionMap());
InputMap input = new InputMap();
input.put(KeyStroke.getKeyStroke("F4"), "f4Action");
input.setParent(this.getInputMap());
// this is the table in question
table.setInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, input);
table.setActionMap(map);
或仅 table.addKeyListener(new KeyListener() { /*...*/ }
使用另一种方法。
是否可以保持标准行为并仅覆盖显式键绑定?以及如何做到这一点。
ActionMap map = new ActionMap();
不要创建新的 ActionMap
。
只需使用现有的 ActionMap
:
ActionMap map = table.getActionMap();
请参阅 Key Bindings 以获取所有当前绑定的列表以及如何自定义绑定的模板。
将 F4 的绑定添加到面板内的 JTable
后,TAB 的标准行为停止工作。当前单元格进入编辑模式,而不是预期的跳转到下一个单元格。
使用 ActionMap
/InputMap
或将 KeyListener
添加到 table
ActionMap map = new ActionMap();
map.put("f4Action", new F4Action());
map.setParent(this.getActionMap());
InputMap input = new InputMap();
input.put(KeyStroke.getKeyStroke("F4"), "f4Action");
input.setParent(this.getInputMap());
// this is the table in question
table.setInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, input);
table.setActionMap(map);
或仅 table.addKeyListener(new KeyListener() { /*...*/ }
使用另一种方法。
是否可以保持标准行为并仅覆盖显式键绑定?以及如何做到这一点。
ActionMap map = new ActionMap();
不要创建新的 ActionMap
。
只需使用现有的 ActionMap
:
ActionMap map = table.getActionMap();
请参阅 Key Bindings 以获取所有当前绑定的列表以及如何自定义绑定的模板。