Mouse Button Press distinction between "Left Mouse Button" and "Double Click Button"

27 visualizaciones (últimos 30 días)
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

Respuesta aceptada

Sai Teja G
Sai Teja G el 29 de Ag. de 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.
  1. One approach is to use the 'WindowButtonDownFcn' function. You can refer to the following link for more details: WindowButtonDownFcn
  2. Another option is to use the 'WaitForButtonPress' function. You can write code similar to the example below to detect a double click:
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!

Más respuestas (1)

Tushar
Tushar el 20 de Feb. de 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!
  1 comentario
Vinay JR
Vinay JR el 26 de Abr. de 2023
On an app made with APP Designer, I have a Button . Now i need to identify when a user do "left click", "right click" and "double click" on this button. How can I impelemnt this??

Iniciar sesión para comentar.

Categorías

Más información sobre Migrate GUIDE Apps en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by