通过editCellAt(row,col)在单元格上强制编辑时,JTable单元格不会触发键事件

use*_*018 0 java swing jtable focusmanager

以下是我的代码片段.我有一个JTable.我已经扩展了DefaultCellEditor来创建我自己的编辑器.我为单元格添加了关键的监听器和鼠标监听器.我也有一个JButton.当我点击JButton时,我希望JTable中的第一个单元格进入编辑模式.为此我使用了requestFocus和editCellAt(0,0).我已将此代码放入actionperformed中.

public void actionPerformed(ActionEvent e)
{
     System.out.println("action performed");

     if(e.getSource().equals(btn))
     {
    oTable.requestFocus();
    oTable.setRowSelectionInterval(0, 0);
    oTable.editCellAt(0, 0);
     }
}
Run Code Online (Sandbox Code Playgroud)

这将光标放在第一个单元格中.但是,当我输入任何内容时,关键事件不会被触发!注意:如果我使用鼠标单击单元格然后键入,它会触发键事件.但我不想做这个额外的点击.

Gui*_*let 6

似乎为我工作.也许您可以尝试以下方法:

table.editCellAt(0, 0);
table.getEditorComponent().requestFocus();
Run Code Online (Sandbox Code Playgroud)