We help IT Professionals succeed at work.

JTable how to detect mouse clicks on row

beside
beside asked
on
2,954 Views
Last Modified: 2012-08-13
Hello,

How to detect double mouse click on JTable and get double clicked row index?

Regards,
Tomas Vilda
Comment
Watch Question

CERTIFIED EXPERT
Top Expert 2016

Commented:
zzynxSr. Software engineer
CERTIFIED EXPERT

Commented:
define

public class MyMouseAdapter extends MouseAdapter {
       
        public MyMouseAdapter() {
        }
       
        public void mouseClicked(MouseEvent e) {
            if ( e.getSource().equals(yourTable) &&
                 SwingUtilities.isLeftMouseButton(e) && e.getClickCount()==2 )
                doDoubleClickAction(yourTable.rowAtPoint(e.getPoint()));
        }

}

combined with

        MyMouseAdapter listener = new MyMouseAdapter();
        theTable.addMouseListener( listener );

Commented:
Something like:

public void myTable_mouseClicked(MouseEvent e)
  {
      if (e.getModifiers() == 16)  //left mousebutton
      {
        if (e.getClickCount() == 2)  //double click
        {

to get the index:

myTable.getSelectedRow();

Remember though that a double click event is always preceeded by a single click event, so you have to take that in consideration when writing the code (in other words, when you make a doubleclick, two mouse events will be fired)

/Nick
Principal Technologist
CERTIFIED EXPERT
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
Mayank SPrincipal Technologist
CERTIFIED EXPERT

Commented:
As far as I know, the double-click cannot be caught in the mouseClicked () method. It will give the click-count as 1 even in case of double-clicks. It has to be captured in the mousePressed () method.

Commented:
>>As far as I know, the double-click cannot be caught in the mouseClicked () method

That's not true. This code is taken from an existing program, and it sure works there.
zzynxSr. Software engineer
CERTIFIED EXPERT

Commented:
>> As far as I know, the double-click cannot be caught in the mouseClicked () method
I copied/pasted that code straight from my working app.
So, it *does* work. At least for me. ;)

Author

Commented:
Very nice :) thanx mayankeagle, just copy pasted, and it works :)) nice one more time
zzynxSr. Software engineer
CERTIFIED EXPERT

Commented:
>> if (e.getModifiers() == 16)

Bwahh! Avoid magic numbers like that.
Mayank SPrincipal Technologist
CERTIFIED EXPERT

Commented:
Well, when I had tried it, it did not work. What happened on a double-click (in order) was:

-> it goes into the mousePressed () method and gives click-count as 1
-> it goes again into the mousePressed () method and gives click-count as 2    - (A)
-> it goes into the mouseClicked () method and gives click-count as 1

So I guess the place to catch it is (A). I'm not sure if click-count always gives 2 in mouseClicked (). But it will definitely give 2 in mousePressed ().
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.