web-dev-qa-db-ja.com

クリックされたJTableセルを特定する

ユーザーがJTableのセルをクリックしたとき、クリックしたセルの行と列をどのように把握できますか?この情報をどのようにJLabelに表示しますか?

21
Cristian

既存の回答は機能しますが、セルの選択を有効にしない場合は、より適切に機能する別の方法があります。 MouseListener内で、次のようなことを行います。

public void mouseClicked(Java.awt.event.MouseEvent event) {
    int row = theTable.rowAtPoint(event.getPoint());
    int col = theTable.columnAtPoint(event.getPoint());
    // ...
35
Pops

JTableで次のメソッドを使用して、選択したセルの行と列を取得できます。

int rowIndex = table.getSelectedRow();
int colIndex = table.getSelectedColumn();

テーブルにSelectionListenerを追加して、テーブルが選択されたときにイベントをキャッチします。

17
Georg Leber

それは私のために働いています!!!

jTable1.addMouseListener(new Java.awt.event.MouseAdapter() {
@Override
 public void mouseClicked(Java.awt.event.MouseEvent evt) {
    int row = jTable1.rowAtPoint(evt.getPoint());
    int col = jTable1.columnAtPoint(evt.getPoint());
    if (row >= 0 && col >= 0) {


    }
 }
});
3
Tamil

列が非表示/再配列されている場合、columnAtPointは可視の列インデックスを返すことがわかりましたが、これは私が必要としているものではありません。私のために働いたコードは

int row = theTable.convertRowIndexToModel(theTable.rowAtPoint(event.getPoint()));
int col = theTable.convertColumnIndexToModel(theTable.columnAtPoint(event.getPoint()));
1
Alexey Romanov

addMouseListener()を試しましたか? SwingのJTableをご利用いただきありがとうございます。

1
AlexR