Java-JTable密钥绑定

时间:2013-12-25 18:25:01

标签: java swing jtable key-bindings

我想在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));

由于

1 个答案:

答案 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);