我想在JTable上更改 ENTER 键的默认操作,使其具有与 F2 键相同的功能。所以我使用了键绑定,它工作正常。只有一个问题:如果 F2 键是第二次在同一个单元格上停止编辑,但 ENTER 键不做同样的事情,它总是在开始编辑时按下。这是我的代码:
InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
KeyStroke f2 = KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0);
im.put(enter, im.get(f2));
由于
答案 0 :(得分:-1)
正如所说@Sage在编辑任何KeyEvent时将由编辑器而不是JTable监听,所以我将KeyListener添加到JTable的CellEditor中。我不知道它是否是最佳解决方案,但目前它的工作方式与预期一致。这是代码:
field.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent arg0) {
if(arg0.getKeyCode()==KeyEvent.VK_ENTER)
table.getCellEditor().stopCellEditing();}});
field是一个JFormattedTextfield,我用它来设置CellEditor:
DefaultCellEditor editor = new DefaultCellEditor(field);
for(int i=0; i<table.getColumnCount(); i++)
table.getColumnModel().getColumn(i).setCellEditor(editor);