我有一个功能强大的功能脚本。其中一部分包括一个创建自定义鼠标光标的java.awt.Robot命令。该脚本完全按照我的意图工作,没有任何错误/错误,只要我可以通过重复运行告诉。
但是,我决定在脚本中添加一个msgbox命令,该命令为运行程序的用户提供了一些关于如何运行程序的说明。添加msgbox命令似乎停用java.awt.Robot命令,即使我使用各种与uiwait相关的变通办法。
知道问题在这里吗? msgbox覆盖了我之前在函数中给出的Robot命令。是最好的选择:
-override msgbox?我该怎么做呢? - 使用除了msgbox之外的弹出文本窗口,不会干扰java.awt.Robot? MATLAB中的另一个选项是什么,而没有进入带有子图和uicontrol文本框的复杂路线?
对于记录,这里是有问题的函数(我在代码的相关部分周围放了星号,这是java.awt.Robot命令和用于强调的msgbox命令,它们显然不是真正函数的一部分) :
function START_Callback(a,b)
delete(gcf);
nRep = 1;
files = dir(fullfile(matlabroot,'toolbox','semjudge',bpic,'*.png'));
nFiles = numel(files);
combos = nchoosek(1:nFiles, 2);
index = combos(randperm(size(combos, 1)), :);
picture1 = files(index(nRep,1)).name;
picture2 = files(index(nRep,2)).name;
image1 = fullfile(matlabroot,'toolbox','semjudge',bpic,picture1);
image2 = fullfile(matlabroot,'toolbox','semjudge',bpic,picture2);
subplot(1,2,1); imshow(image1);
subplot(1,2,2); imshow(image2);
set(gcf,'Color',[1 1 1]);
uicontrol('Style', 'text',...
'Position', [200 375 200 20],...
'String','How related are these pictures?');
uicontrol('Style', 'text',...
'Position', [50 375 100 20],...
'String','Unrelated');
uicontrol('Style', 'text',...
'Position', [450 375 100 20],...
'String','Closely related');
nxt = uicontrol('Style','pushbutton','String','Next Trial',...
'Position', [250 45 100 20],...
'Callback',{@NextTrial});
set(nxt,'Enable','off');
**P = ones(16);
P(2:16,2:16) = NaN;
set(gcf, 'Pointer', 'custom','PointerShapeCData',P);
jRobot=java.awt.Robot;
x=928;
y=457;
jRobot.mouseMove(x,y);**
h = uicontrol(gcf,...
'Style','slider',...
'Min' ,0,'Max',100, ...
'Position',[100 350 400 20], ...
'Value', 50,...
'SliderStep',[0.02 0.1], ...
'BackgroundColor',[0.8,0.8,0.8],...
'Callback', @SliderCallBackFcn);
set(gcf, 'WindowButtonMotionFcn', @point);
set(gcf, 'WindowScrollWheelFcn', @cb);
**msgbox('INSTRUCTIONS GO HERE');**
lastVal = get(h, 'Value');
end