2009-09-04 13 views
19

データとしてJLabel[][]のJTableがあります。今は、JLabelまたはテーブルセルのいずれか(ただし列の1つのみ)のダブルクリックを検出する必要があります。 JLabelにそれぞれAction/MouseListenerを追加するにはどうすればいいですか?JLabelまたはJTableセルのActionListener

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 
    } 
    } 
}); 
+0

JLabelsはActionListenersを持っていませんが、MouseListenerを持っていて、それを追加して、mouseClickでリッスンします – Telcontar

答えて

56

。 mouseClickedイベントは、mousePressedイベントとmouseReleasedイベントが同じピクセル位置で生成された場合にのみ発生します。ユーザーがダブルクリックしている間にマウスを1ピクセル移動しても、ダブルクリックは発生しません。

b)クリックしたセルを取得するには、columnAtPoint()およびrowAtPoint()メソッドを使用することを検討することもできます。この場合はおそらく違いはありませんが、マウスの右クリックにMouseListenerを使用しようとすると、選択が変更されないので問題になります。したがって、この方法を使用する習慣を覚えれば、将来問題は発生しません。

+0

Jlabelが表の中にある場合、そのクリックイベントをどのように呼びますか? – Krishna

+1

以下のように@Camickrのコメント、私はそれがMouseClickされていないメソッドを使用する方がいいと思うMouseClick –

26

すでに除き受け入れたものと基本的に同じ提案:

a)は、あなたがのmouseClickedない、のmousePressedを処理する必要がありますについてはどのように

関連する問題