我的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一样,只需点击一下即可进入下一栏?
答案 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);
}
};