パネルに 2 つのテーブルがあります。あるセルの最初のテーブルをクリックすると、その行が選択されます。また、あるセルの 2 番目のテーブルをクリックすると、その行も選択されます。
さて、どのテーブルが最後にクリックされたかを知るにはどうすればよいでしょうか。両方のテーブルで試してみましisRowSelected
たが、両方とも戻ってきたので、最後にクリックしたテーブルを見つけることができませんか?
誰か助けてくれませんか?
これを MouseListener から決定する必要があるのか、ListSelectionListener から決定する必要があるのかはわかりませんが、最も簡単な解決策は同様です。テーブルごとに異なるリスナーを使用します。
table1.addXxxListener(new XxxListener() {
// here, you know it's table 1
}
table2.addXxxListener(new XxxListener() {
// here, you know it's table 2
}
それを行う別の方法は、イベントのソースを確認することです。
new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getSource()==table1.getSelectionModel()) {
// Event comes from table1
} else if (e.getSource()==table2.getSelectionModel()) {
// Event comes from table2
}
}
}
もちろん、これは、選択モデルが単一のテーブルで使用されている場合にのみ当てはまります (独自の ListSelectionModel を設定していない場合)。