<JTable>.getSelectedRow() 返回 -1



我在JTable上写了一个"双击"事件。我的JTable,即myTaskTable填充了许多具有多列的行。我希望在双击JTable的一行时检索行索引。我不确定为什么它总是向我返回 -1 的索引导致异常。我忽略了什么吗?可能出现什么问题?

这就是我从JTable中检索所选行的索引的方式 - myTaskTable

int selRow = myTaskTable.getSelectedRow();

谢谢!

编辑

这是代码:

...
myTaskTable.addMouseListener(this);
...
public void mouseClicked(MouseEvent e)
{
 if(e.getModifiers() == MouseEvent.BUTTON1_MASK)
 {
   if(e.getClickCount() == 2)
   {
     e.consume();
     int selRow = myTaskTable.getSelectedRow();
     System.out.println("GridReport double clicked on row="+selRow);
    }
  }
}

使用事件而不是表选择获取行索引:

final int selectedRowIndex = table.rowAtPoint(mouseEvent.getPoint());
// If the rows are sorted or filtered
final int modelRowIndex = table.convertRowIndexToModel(selectedRowIndex);

getSelectedRow()不适用于多个选定行(允许多个选择),因为它将始终返回"第一个选定行的索引"。

你有没有试过把e.consume();作为最后一句话?

public void mouseClicked(MouseEvent e){
 if(e.getModifiers() == MouseEvent.BUTTON1_MASK){
   if(e.getClickCount() == 2){
     int selRow = myTaskTable.getSelectedRow();
     System.out.println("GridReport double clicked on row="+selRow);
     e.consume();
    }
  }
}

当您完成响应式代码时,将调用 normaly e.consume();。这将清除事件的依赖项,因此也可能清除选定的行。

最新更新