2

に「ダブルクリック」イベントを作成しましたJTable。私のJTable、つまり。myTaskTableには、複数の列を持つ多数の行が入力されます。の行の1つをダブルクリックしたときに、行インデックスを取得したい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);
    }
  }
}
4

2 に答える 2

3

テーブルの選択ではなく、イベントを使用して行インデックスを取得します。

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

getSelectedRow()常に「最初に選択された行のインデックス」を返すため、複数の選択された行(複数の選択が許可されます)では機能しません。

于 2012-09-30T22:18:37.847 に答える
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();
    }
  }
}

通常e.consume();、リアクティブコードが終了すると呼び出されます。これにより、イベントの依存関係がクリアされるため、選択した行もクリアされる可能性があります。

于 2012-09-30T22:07:20.677 に答える