- One approach is to use the 'WindowButtonDownFcn' function. You can refer to the following link for more details: WindowButtonDownFcn
- Another option is to use the 'WaitForButtonPress' function. You can write code similar to the example below to detect a double click:
Mouse Button Press distinction between "Left Mouse Button" and "Double Click Button"
29 views (last 30 days)
Show older comments
I have a Figure on which I load an .png image. I need to distinguish between SelectionType: "Left click" and "Double click". Below is my program. As I run it, when ever a Double click is excecuted it displays a "Left click". How do I make the program identify a "Double click"?
figure(1)
im= imread('Mouse.PNG'); %loading the image
i=imshow(im);
set(i,'buttondownfcn',@mybttnfcn); %setting the callback function
function mybttnfcn(h,~)
haxes = get(h,'parent'); %axes properties
hfigure = get(haxes,'parent'); %figure properties
b = get(hfigure,'selectiontype'); %identifying Selectiontype
xy = get(gca,'CurrentPoint'); %getting current points
if strcmpi(b,'normal')
text(xy(1,1),xy(1,2),'Left click') %displaying Left-click
elseif strcmp(b,'extend')
text(xy(1,1),xy(1,2),' Middle button') %displaying Middle-click
elseif strcmpi(b,'alt')
text(xy(1,1),xy(1,2),'Right click') %displaying Right-click
elseif strcmpi(b,'open')
text(xy(1,1),xy(1,2),'Double-click') %displaying Double-click
else
text(xy(1,1),xy(1,2),'Retry')
end
end
0 Comments
Accepted Answer
Sai Teja G
on 29 Aug 2023
Hi Vinay,
I understand that you want to identify the type of click the user does in the AppDesigner.
Unfortunately, it is currently not possible to identify left or right clicks in AppDesigner. However, there are workarounds available to detect double clicks.
w=waitforbuttonpress;
if w==0 % checking for single click
k=waitforbuttonpress;
if k==0 % checking for double click
disp("Hello World")
end
end
For more detailed documentation on both methods, you can refer to this link:
Hope it helps!
0 Comments
More Answers (1)
Tushar
on 20 Feb 2023
Hi,
1. You can add a delay to distinguish single click from a double click, as your double clicks were perceived as two times single click.
You can have a look at this answer, which solves the same issue which you are facing:
2. But, if you even don't want to burn half-second each time, then you could add a click threshold, and take action on single or double type of clicks.
For this you can have a look here:
Hope it helps!
See Also
Categories
Find more on Migrate GUIDE Apps in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!