MATLAB msgbox и java.awt.Robot проблема? - PullRequest
1 голос
/ 30 марта 2012

У меня был функциональный скрипт, который работал отлично.Часть этого включает небольшую команду java.awt.Robot, которая создает пользовательский курсор мыши.Скрипт работает точно так, как я и предполагал, без каких-либо ошибок / ошибок, насколько я могу судить по повторным запускам.

Однако я решил добавить в скрипт команду msgbox, которая дает пользователю, запускающему программу, пару инструкций о том, что делать для запуска программы.Добавление команды msgbox в, кажется, деактивирует команду java.awt.Robot, даже если я использую различные обходные пути, связанные с uiwait.

Есть идеи, в чем здесь проблема?msgbox переопределяет команду Robot, которую я дал ранее в функции.Наилучший вариант:

- переопределить 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
...