我想在MATLAB GUI中有一个“编辑”框,上面写着“TYPE SEARCH HERE”。 当用户在框中单击时,我希望“TYPE SEARCH HERE”消失,并为用户提供一个空的编辑框以开始输入...
有什么想法吗?
答案 0 :(得分:4)
至少在我的系统上,当我使用以下代码设置用户输入框/窗口
时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
答案 1 :(得分:1)
Chris,你必须点击uicontrol边框才能使ButtonDownFcn发生。如果单击 编辑框
,则不会发生这种情况答案 2 :(得分:0)
好的,所以我有一个问题的解决方案,它完美无缺!!
然而,我非常沮丧,因为我完全不知道为什么它有效...
使用以下代码:
function myEditBoxTagGoesHere_ButtonDownFcn(hObject,eventdata,handles)
%将“启用”状态切换为“开”
set(hObject,'Enable','On');
%创建UI控件
uicontrol(handles.myEditBoxTagGoesHere);
如果有人能解释为什么uicontrol在点击鼠标左键时突出显示文字,那就太棒了!
答案 3 :(得分:-2)
Hooplator15,之所以起作用,是因为“启用”处于禁用状态时,编辑文本就像按钮一样:
如果Enable =='on'(编辑文本Enable),则_ButtonDownFcn函数在鼠标按下5像素边框时执行;
否则,它会在鼠标按下5像素边框时执行,或者在按钮上方的编辑文本上执行。