我在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);
}
}
}
答案 0 :(得分:3)
使用事件获取行索引,而不是表选择:
final int selectedRowIndex = table.rowAtPoint(mouseEvent.getPoint());
// If the rows are sorted or filtered
final int modelRowIndex = table.convertRowIndexToModel(selectedRowIndex);
getSelectedRow()
不适用于多个选定的行(允许多个选择),因为它始终会返回"the index of the first selected row"。
答案 1 :(得分:0)
您是否尝试将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();
。这会清除事件的依赖关系,因此它也可能会清除所选的行。