JLabel[][]
データとして。次に、JLabelまたはテーブルセル(ただし、列の1つのみ)のダブルクリックを検出します。 JLabelまたはテーブルセルにAction/MouseListenerを追加するにはどうすればよいですか?
どうですか:
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
JTable target = (JTable)e.getSource();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
// do some action if appropriate column
}
}
});
基本的には、次の点を除いて、すでに受け入れられている提案と同じです。
a)mouseClickedではなく、mousePressedを処理する必要があります。 mouseClickedイベントは、mousePressedイベントとmouseReleasedイベントが同じピクセル位置で生成された場合にのみ発生します。ダブルクリック中にユーザーがマウスを1ピクセルでも動かした場合、予期したダブルクリックが得られません。
b)また、columnAtPoint()およびrowAtPoint()メソッドを使用して、クリックされたセルを取得することを検討することもできます。この場合はおそらく違いはありませんが、選択が変更されないため、マウスの右クリックにMouseListenerを使用する場合は問題になります。したがって、この方法を使用する習慣に慣れていれば、将来問題は発生しません。