私は、ユーザにを入力したいMatlab UIを持っています。ラジオボタンが選択されるとすぐにimrect
を使用していくつかの領域を入力します。
選択範囲を無限ループにする必要があるため、いくつの領域が選択されるかは不明です。
ラジオボタンが選択されるとすぐに、imrect
入力はを停止する必要がありますが、これは動作しません。Matlabは無限ループに直面する
function mwe
ax = axes('Position', [0 0 1 1]);
bg = uibuttongroup('Position',[0 0 .15 1], 'SelectionChangedFcn',{@bselection, ax});
r1 = uicontrol(bg, 'Style','radiobutton', 'String','Option 1', 'Position',[10 250 100 30]);
r2 = uicontrol(bg, 'Style','radiobutton', 'String','Option 2', 'Position',[10 225 100 30], 'Value',1);
function bselection(source, event, ax)
switch event.NewValue.String
case 'Option 1'
while true
h = imrect(ax);
% do stuff
delete(h);
end
case 'Option 2'
% do not show imrect and do other stuff
end
私は任意の助けに感謝:
は、ここでは、最小限の作業例です。
ありがとうございました!あなたのソリューションは非常にうまく動作します。私は、 'true 'を' while strcmp(source.SelectedObject.String、' Option 1 ') 'に置き換えることで、ラジオボタンの選択を確認する簡単な方法を見つけました。しかし、唯一の問題は、ラジオボタンの選択を変更した後も、前回と同じように 'imrect'が実行されることです。これを解決するために、オプション2が選択されたときにエスケープボタンの押下をシミュレートすることで回避策を使用します。したがって、 'case 'オプション2''私は 'robot = java.awt.Robot 'を追加しました。 robot.keyPress(java.awt.event.KeyEvent.VK_ESCAPE); robot.keyRelease(java.awt.event.KeyEvent.VK_ESCAPE); '。 – Jojo