我想在 MATLAB GUI 中有一个“编辑”框,上面写着“在此处键入搜索”。当用户在框内单击时,我希望“在此处键入搜索”消失并为用户提供一个空的编辑框以开始输入...
有任何想法吗?
我想在 MATLAB GUI 中有一个“编辑”框,上面写着“在此处键入搜索”。当用户在框内单击时,我希望“在此处键入搜索”消失并为用户提供一个空的编辑框以开始输入...
有任何想法吗?
至少在我的系统上,当我使用以下代码设置用户输入框/窗口时
prompt = 'Enter search terms:';
dlg_title = 'My input box';
num_lines = 1;
defAns = {'TYPE_SERACH_HERE'};
answer = inputdlg(prompt, dlg_title, num_lines, defAns);
默认文本TYPE_SEARCH_HERE
突出显示,因此我可以开始输入以将其替换为我想要的任何内容。
编辑或者,如果您有一个现有的uicontrol
编辑框,您可以执行以下操作:
function hedit = drawbox()
hedit = uicontrol('Style', 'edit',...
'String', 'deafult',...
'Enable', 'inactive',...
'Callback', @print_string,...
'ButtonDownFcn', @clear);
end
function clear(hObj, event) %#ok<INUSD>
set(hObj, 'String', '', 'Enable', 'on');
uicontrol(hObj); % This activates the edit box and
% places the cursor in the box,
% ready for user input.
end
function print_string(hObj, event) %#ok<INUSD>
get(hObj, 'String')
end
好的,所以我有一个解决问题的方法,它完美无缺!!
但是,我很沮丧,因为我完全不知道它为什么会起作用......
使用以下代码:
函数 myEditBoxTagGoesHere_ButtonDownFcn(hObject, eventdata, 句柄)
% 将“启用”状态切换为 ON
设置(hObject,“启用”,“开”);
% 创建 UI 控件
uicontrol(handles.myEditBoxTagGoesHere);
如果有人能解释为什么 uicontrol 在鼠标左键单击时突出显示文本,那就太好了!
克里斯,您必须单击 uicontrol 边框才能使 ButtonDownFcn 发生。如果您在编辑框内单击,则不会发生
Hooplator15,它之所以有效,是因为当 Enable 为 Off 时,编辑文本就像按钮:
如果 Enable == 'on'(编辑文本 Enable),函数 _ButtonDownFcn 会在鼠标按下 5 像素边框时执行;
否则,它会在鼠标按下 5 像素边框或编辑文本(如按钮)时执行。