使Enter键的行为类似于JTable中的Tab键

时间:2016-10-03 17:57:56

标签: java jtable

我的JTable上的Enter键已从第一列水平转到最后一列,然后使用以下方式转到下一行:

table.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), "selectNextColumnCell"); //To make it move horizontally
table.putClientProperty("terminateEditOnFocusLost", true); //To save the edited value when focus is lost

问题在于,编辑时我必须单击Enter两次才能转到下一列(第一次完成编辑,第二次移动到下一列),而tab只需单击一下即可。如何让Enter表现得像Tab一样,只需点击一下即可进入下一栏?

2 个答案:

答案 0 :(得分:0)

尝试删除 Enter 键的映射,然后再添加新映射。

以下是一个例子:

// remove default mapping.
table.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), null);
// add new mapping.
table.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), "selectNextColumnCell");

答案 1 :(得分:0)

我通过以下方式覆盖DefaultTableModel的setValueAt方法来解决问题:

DefaultTableModel model = new DefaultTableModel() {
    @Override
    public void setValueAt(Object value,
            int rowIndex,
            int columnIndex) {
        super.setValueAt(value, rowIndex, columnIndex);
        ProductsT.setRowSelectionInterval(rowIndex, rowIndex);
        ProductsT.changeSelection(rowIndex, columnIndex + 1, false, false);
    }
};