tags:

views:

782

answers:

4

I use public boolean mouseDown(Event ev, int x, int y) to detect a click of the mouse.
I can distinguish between the right mouse button (ev.metaDown() is true) and the left and middle.

How can i differentiate the left from the middle button? Or if it is impossible with mouseDown, what should i use?

+1  A: 

mouseDown is deprecated. All you need is accessible by the MouseEvent.getButton. Track BUTTON3.

PW
What should be used instead? ev.getButton() does not exist since ev is an Event not an MouseEvent.
Burkhard
you should implement the MouseListener interface, look at the code sample on this page: http://java.sun.com/docs/books/tutorial/uiswing/events/mouselistener.html
PW
That should be BUTTON2, not BUTTON3. BUTTON3 is the right button.
Michael Myers
BUTTON3 is the middle button, http://www.java-tips.org/other-api-tips/jogl/how-to-implement-a-simple-double-buffered-animation-with-mouse-e.html
PW
+1  A: 

I have the same problem.

@PW: Which MouseEvent do you mean? I don't have a getButton in it. Neither method nor property.

+1  A: 

Try using ALT_MASK:

This flag indicates that the Alt key was down when the event occurred. For mouse events, this flag indicates that the middle mouse button was pressed or released.

So your code might be:

if (ev.modifiers & Event.ALT_MASK != 0) {
    // middle button was pressed
}

Of course, all this is assuming you have a very good reason to use mouseDown in the first place, since it is deprecated. You should (probably) be using processMouseEvent instead, which gives you a MouseEvent to play with.

Michael Myers