JTable.getSelectedRow() 返回错误的值



在使用javax.swing的项目中,代码如下所示:

JTable m_Table;
...
public void actionPerformed( ActionEvent e )
{
    TableCellEditor editor = m_Table.getCellEditor();
    if( editor != null )
    {
        editor.stopCellEditing();
    }
    int row = m_Table.getSelectedRow();
    if( row < 0 )
    {
        row = 0;
    }
    // bug: if the cursor is in an edit box,
    // the row number happens to be greater by 1

问题是它看起来像row是基于 1 而不是从 0 开始的,但前提是光标位于单元格编辑框中。

为什么getSelectedRow((返回错误的值?

stopCellEdit(( 有一个未记录的副作用:它将焦点移动到下一个 - 不确定是什么(单元格?可编辑单元格?( - 但下一件事在下一行。

编辑 根据注释,stopCellEdit(( 不会改变焦点,但它调用可以做到这一点的侦听器。(嗯,将焦点转移到下一个领域是应用软件中的常见模式。

补救措施是首先获取 getSelectedRow((,然后才停止 CellEdit((。

最新更新