有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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()返回错误的值


共 (1) 个答案

  1. # 1 楼答案

    stopCellEditing()有一个未记录的副作用:它会将焦点移动到下一个不确定的位置(单元格?可编辑单元格?)但下一件事发生在下一排

    根据注释进行编辑,stopCellEditing()不会更改焦点,但它会调用可以更改焦点的侦听器。(将重点转移到下一个领域是应用软件中的常见模式。)

    解决方法是先获取SelectedRow(),然后再获取stopCellEditing()