Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

What's the difference between mouseClicked and mousePressed?

717 views
Skip to first unread message

Eric Douglas

unread,
Jan 23, 2018, 8:17:39 AM1/23/18
to
They appear to do the same thing, except you can't fire mouseClicked with touch events.

Eric Sosman

unread,
Jan 23, 2018, 9:22:45 AM1/23/18
to
On 1/23/2018 8:17 AM, Eric Douglas wrote:
> They appear to do the same thing, except you can't fire mouseClicked with touch events.

Pressed fires when the mouse button goes down, Released and
Clicked fire when it goes back up again. Try this:

Mouse onto listening component
Press a button
W-a-i-t
Release the button

... and note the time stamps on the various events. You can also
play around with multiple buttons, sliding the mouse onto the
listening component with a button already down, and so on -- I'm
sure a little experimentation will clarify things. (Disclaimer:
I have no clue about Swing/AWT and touch devices.)

--
eso...@comcast-dot-net.invalid
One thousand ninety-three days to go.

Eric Douglas

unread,
Jan 23, 2018, 9:36:07 AM1/23/18
to
On Tuesday, January 23, 2018 at 9:22:45 AM UTC-5, Eric Sosman wrote:
> Pressed fires when the mouse button goes down, Released and
> Clicked fire when it goes back up again. Try this:
>
> Mouse onto listening component
> Press a button
> W-a-i-t
> Release the button
>
> ... and note the time stamps on the various events. You can also
> play around with multiple buttons, sliding the mouse onto the
> listening component with a button already down, and so on -- I'm
> sure a little experimentation will clarify things. (Disclaimer:
> I have no clue about Swing/AWT and touch devices.)
>

and if I'm looking for a double click / double tap event?

Eric Douglas

unread,
Jan 23, 2018, 9:47:58 AM1/23/18
to
On Tuesday, January 23, 2018 at 9:36:07 AM UTC-5, Eric Douglas wrote:
> > Mouse onto listening component
> > Press a button
> > W-a-i-t
> > Release the button
> >
> > ... and note the time stamps on the various events. You can also
> > play around with multiple buttons, sliding the mouse onto the
> > listening component with a button already down, and so on -- I'm
> > sure a little experimentation will clarify things. (Disclaimer:
> > I have no clue about Swing/AWT and touch devices.)
> >
>
> and if I'm looking for a double click / double tap event?

I'm not seeing the point to mouseClicked since it doesn't appear to work with touch events and I'm testing our application on a Surface Pro. If I'm looking for single click I can use mouseReleased and for double click I can use mousePressed and get the same result?
Oddly mouseClicked will only tell you if you got a single mousePressed immediately followed by a mouseReleased in the same location, but both of those events translate to touch events while mouseClicked does not?

Eric Sosman

unread,
Jan 23, 2018, 9:55:51 AM1/23/18
to
Do some experimenting. Write a simple test harness that reports
mouse events as they occur, or use one already written:

https://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html

Daniele Futtorovic

unread,
Jan 23, 2018, 1:42:21 PM1/23/18
to
Check the Javadoc for java.awt.event.MouseEvent.

Also, MouseEvent has a #getClickCount(). Might be what you're looking for.

--
DF.

Eric Douglas

unread,
Jan 23, 2018, 2:04:15 PM1/23/18
to
On Tuesday, January 23, 2018 at 1:42:21 PM UTC-5, Daniele Futtorovic wrote:
>
> Also, MouseEvent has a #getClickCount(). Might be what you're looking for.
>
> --
> DF.

You can do if (e.getClickCount()==2) in mousePressed, or mouseReleased, seems to accomplish the same double click event as if you used mouseClicked, except I don't see a way to get to mouseClicked with touch events.

Knute Johnson

unread,
Jan 23, 2018, 3:07:03 PM1/23/18
to
Are you using a different API? Otherwise touch events are the same as
mouse events. It could be however that your Surface Pro is too slow in
propagating events and you never see click counts greater than 1. On my
Acer touch screen and that JavaWS program from the Tutorial that Eric
posted I can get click counts of 2 but I have to be fast :-).

--

Knute Johnson

Eric Douglas

unread,
Jan 23, 2018, 3:41:31 PM1/23/18
to
I get the click counts, it processes double click from mousePressed or mouseReleased, I just can't get into the mouseClicked from the touch events (either from finger or pen).
Now I see Oracle explains they did set up touch events as mouse events, a touch pressed = mouse pressed, with no mention of mouseClicked on that page. So it just doesn't appear they set up any way to generate it.
https://docs.oracle.com/javase/8/javafx/events-tutorial/gestures.htm

Knute Johnson

unread,
Jan 23, 2018, 3:55:05 PM1/23/18
to
TouchEvents are JavaFX events not Swing. I thought you were using
Swing? Did you try that JavaWS program that Eric S posted the link to?
I get MouseEvents on my Acer touch screen with that. The click counts
come from timing clicks over a period of time. The individual events
are not changed.

--

Knute Johnson

Eric Douglas

unread,
Jan 23, 2018, 4:11:40 PM1/23/18
to
On Tuesday, January 23, 2018 at 3:55:05 PM UTC-5, Knute Johnson wrote:
>
> TouchEvents are JavaFX events not Swing. I thought you were using
> Swing? Did you try that JavaWS program that Eric S posted the link to?
> I get MouseEvents on my Acer touch screen with that. The click counts
> come from timing clicks over a period of time. The individual events
> are not changed.
>
> --
>
> Knute Johnson

Yes I am processing touch events in Swing, no FX. I just googled "java mouse touch events" and that was the first relevant doc that came up. The first result was for swing which said nothing about touch. I thought that was the same? You can get into mouseClicked from a touch event? I couldn't get mine to work. Is it proximity? I was using mouseClicked for double clicks, and normally with a mouse you don't move the pointer between clicks, but with a finger or pen it can be hard to hit the exact same spot twice.

Knute Johnson

unread,
Jan 23, 2018, 4:18:53 PM1/23/18
to
On 1/23/2018 15:11, Eric Douglas wrote:
> On Tuesday, January 23, 2018 at 3:55:05 PM UTC-5, Knute Johnson wrote:
>>
>> TouchEvents are JavaFX events not Swing. I thought you were using
>> Swing? Did you try that JavaWS program that Eric S posted the link to?
>> I get MouseEvents on my Acer touch screen with that. The click counts
>> come from timing clicks over a period of time. The individual events
>> are not changed.
>>
>> --
>>
>> Knute Johnson
>
> Yes I am processing touch events in Swing, no FX.

I think that's the problem, there aren't any in Swing.

--

Knute Johnson

Eric Douglas

unread,
Jan 23, 2018, 4:37:13 PM1/23/18
to
On Tuesday, January 23, 2018 at 4:18:53 PM UTC-5, Knute Johnson wrote:
> >
> > Yes I am processing touch events in Swing, no FX.
>
> I think that's the problem, there aren't any in Swing.
>
> --
>
> Knute Johnson

If switching our Swing controls to JavaFX controls is possible it would be ugly.
If Swing isn't supposed to handle the touch events, I don't know how they're converting. mousePressed and mouseReleased are getting called. I did find an old blog that says mouseClicked looks like a double tap, I'll have to test it again maybe tapping 4 times would process a mouseClicked double click. It does accept getClickCount()==2 from 2 taps in mousePressed or mouseReleased.

Knute Johnson

unread,
Jan 23, 2018, 4:49:16 PM1/23/18
to
Try that JavaWS program that Eric S posted the link to. I get a
mousePressed, mouseReleased and a mouseClicked just by touching the
screen and lifting my finger.

--

Knute Johnson
0 new messages