2011-01-25 11 views

答えて

1

あなたはaddMouseListener()を試しましたか?私はあなたがSwingのJTableの使い方について願っています。

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

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

+0

です。私はスイングを使っていますが、私はaddMouseListenerを試していません。今すぐやろう...ありがとう。 – Cristian

+0

これはちょっと混乱しています。ポインタやリンクを教えてください。私は検索してきましたが結果はありません。私は選択したjTableセルの行と列をjLabelに追加するだけです..... – Cristian

+0

私は問題に取り組む良い方法だとは思わない。 MouseEventは、列と行に変換するのが簡単ではありません。 Develmanの答えを参照してください。 – jzd

17

あなたは、選択したセルの行と列を取得するためにJTableの上、以下の方法を使用することができます。

+2

+1ですが、ListSelectionListenerはJTableではなくListSelectionModelに追加されます。 – camickr

+6

また、選択された行が同じで選択された列の変更を維持する場合、JTableのColumnModelにListSelectionListenerを追加することもできます:table.getColumnModel()。getSelectionModel()。addListSelectionListener(...); – Uhlen

32

既存の回答は機能しますが、セル選択を有効にしていない場合は、より良い方法があります。 MouseListenerの内部では、次のような操作を行います。

public void mouseClicked(java.awt.event.MouseEvent event) { 
    int row = theTable.rowAtPoint(event.getPoint()); 
    int col = theTable.columnAtPoint(event.getPoint()); 
    // ... 
+0

この回答のための小道具。 右クリックでgetSelectedRow()またはgetSelectedColumn()が機能しません。 – Jesus

+0

(ほぼ)すべてのJava Swingの「ソリューション」のように、sorcks:うまくいっても機能します。 – Felype

3

私のために働いています!

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) { 


    } 
} 
}); 
0

私は列が隠されているとき/並べ替えcolumnAtPoint、私は必要なものではありませんこれは、目に見える列のインデックスを返すことがわかってきました。私のために働いたコードは

int row = theTable.convertRowIndexToModel(theTable.rowAtPoint(event.getPoint())); 
int col = theTable.convertColumnIndexToModel(theTable.columnAtPoint(event.getPoint())); 
関連する問題