扩展JTable中的键绑定

时间:2016-12-20 16:24:57

标签: java swing awt keylistener key-bindings

F4 的绑定添加到面板内的JTable后, TAB 的标准行为将停止工作。当前单元格进入编辑模式,而不是预期跳转到下一个单元格。

使用ActionMap / InputMap或在表格中添加KeyListener时会发生这种情况

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() { /*...*/ }

是否可以保留标准行为并仅覆盖显式键绑定?如何做到这一点。

1 个答案:

答案 0 :(得分:3)

ActionMap map = new ActionMap();

不要创建新的ActionMap

只需使用现有的ActionMap

ActionMap map = table.getActionMap();

请参阅Key Bindings以获取所有当前绑定的列表以及如何自定义绑定的模板。