gpt4 book ai didi

java - 当鼠标在 MATLAB 中传递静态文本时更改鼠标光标

转载 作者:行者123 更新时间:2023-12-01 22:46:41 25 4
gpt4 key购买 nike

我希望当鼠标位于静态文本上时鼠标光标发生变化(不是单击它,仅在静态文本区域上发生变化)。我在 undocumented-matlab 中找到了这些 java cod:

jb = javax.swing.JButton;
jb.setCursor(java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));

我将这些代码复制到static textCreareFcnButtonDownFcn中,但没有任何改变,一切都是默认的。我该如何做到这一点?我应该将这些代码放在静态文本中的什么位置?

谢谢。

最佳答案

您可以使用鼠标运动监听器来实现此目的,如下所示:

function init()
%// Initialize the figure with a listener:
h = figure('WindowButtonMotionFcn',@windowMotion,'Pos',[400,400,200,200]);
%// Add a "static" text label:
col = get(h,'color');
lbl = uicontrol('Style','text', 'Pos',[10,160,120,20], ...
'Background',col, 'HorizontalAlignment','left');
drawnow;
setptr(gcf, 'fleur'); %// Optional, set default pointer.

function windowMotion(varargin)
cursor_pos = get(h,'CurrentPoint');
set(lbl,'String',sprintf('Mouse position: %d, %d',cursor_pos));
drawnow;

pos = get(lbl,'position'); %// This doesn't need to happen every time,
%// it's here for the sake of demonstration.
if (cursor_pos(1)>pos(1) && cursor_pos(1)<pos(1)+pos(3)) && ...
(cursor_pos(2)>pos(2) && cursor_pos(2)<pos(2)+pos(4))
setptr(gcf, 'hand'); %// Change to this cursor if pointer is inside
%// the element.
else
setptr(gcf, 'fleur'); %//otherwise (re)change to default
end

end

end

请注意,而不是 if ,这可能是 switch-case选择类型(如果您希望光标针对不同的 UI 元素进行不同的更改)。

此代码基于 this post on UndocumentedMatlab 。您可以在 MATLAB here 中找到有关鼠标指针修改的更多信息。

编辑

要在 GUIDE 中自动创建此回调,请参见下图。请注意,您需要更改 lblhandles.tag_of_statictxth到当前图窗的句柄(通常由 gcfgcbo 返回)。 How to create the callback automatically in GUIDE

关于java - 当鼠标在 MATLAB 中传递静态文本时更改鼠标光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25228843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com