在MATLAB GUI中单击鼠标编辑框清除

时间:2012-01-05 14:55:54

标签: matlab user-interface matlab-guide

我想在MATLAB GUI中有一个“编辑”框,上面写着“TYPE SEARCH HERE”。 当用户在框中单击时,我希望“TYPE SEARCH HERE”消失,并为用户提供一个空的编辑框以开始输入...

有什么想法吗?

4 个答案:

答案 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)

好的,所以我有一个问题的解决方案,它完美无缺!!

然而,我非常沮丧,因为我完全不知道为什么它有效...

  1. 在GUIDE中创建一个编辑文本框,然后右键单击它以打开属性检查器。
  2. 将“TYPE TEXT HERE”文本添加到“string”属性
  3. 找到属性nammed“启用”并将其切换为“无效”
  4. 创建一个buttonDownFnc(也可以在属性检查器中完成)
  5. 使用以下代码:

    function myEditBoxTagGoesHere_ButtonDownFcn(hObject,eventdata,handles)

    %将“启用”状态切换为“开”

    set(hObject,'Enable','On');

    %创建UI控件

    uicontrol(handles.myEditBoxTagGoesHere);

  6. 如果有人能解释为什么uicontrol在点击鼠标左键时突出显示文字,那就太棒了!

答案 3 :(得分:-2)

Hooplator15,之所以起作用,是因为“启用”处于禁用状态时,编辑文本就像按钮一样:

  • 如果Enable =='on'(编辑文本Enable),则_ButtonDownFcn函数在鼠标按下5像素边框时执行;

  • 否则,它会在鼠标按下5像素边框时执行,或者在按钮上方的编辑文本上执行。