在MatlabGUI用户控件中处理回车/换行

在MatlabGUI用户控件中处理回车/换行,matlab,text,user-controls,newline,carriage-return,Matlab,Text,User Controls,Newline,Carriage Return,我有一个MATLAB程序,我正在开发,以做一些图像处理的东西,并需要使用一个用户控制到一个MatlabGUI用户界面,我创建了特设 此用户控件是一个列表框,我想在其中插入一些文本。问题不是我不能把文本放在那里,我可以通过这个调用: set(handles.mylistbox, 'String', 'MyStringToPrint'); 问题是这个调用不允许我在列表框中插入很多行,而只是覆盖了上一行 我希望找到一种方法,让我的代码在新行中插入新文本。这应该不难做到,这也是一个简单的模式: tex

我有一个MATLAB程序,我正在开发,以做一些图像处理的东西,并需要使用一个用户控制到一个
MatlabGUI
用户界面,我创建了特设

此用户控件是一个
列表框
,我想在其中插入一些文本。问题不是我不能把文本放在那里,我可以通过这个调用:

set(handles.mylistbox, 'String', 'MyStringToPrint');
问题是这个调用不允许我在列表框中插入很多行,而只是覆盖了上一行

我希望找到一种方法,让我的代码在新行中插入新文本。这应该不难做到,这也是一个简单的模式:

texttoprint = 'My text to add'
oldtext = get(handles.MyListBox, 'String') %Holding the previous text here
set(handles.MyListBox, 'String', [oldtext '\n' texttoprint]) %Setting (no line feed printed)
set(handles.MyListBox, 'String', [oldtext char(10) texttoprint]) %Setting (this fails too)
好的,它是正常的,不会引起任何错误,但是,
\n
不起作用。 我没有新的线路。。。但是我需要

我应该如何解决这个问题? 问题是我需要在这个用户控件中打印文本,而不是在MATLAB命令行上打印文本(这非常简单,只需执行
sprintf()


怎么办?谢谢

对于列表框,请将字符串属性设置为单元格

set(myListboxHandle,'String',{'myFirstLine';'mySecondLine'})
如果您想添加另一行,请拨打

contents = get(myListboxHandle,'String');
set(myListboxHandle,[contents;{'another line'}])
对于GUI中的多行文本,请使用
char(10)
而不是
\n
,即

set(someUiControlHandle,'String',sprintf('my first line%smy second line',char(10)))

对于列表框,将字符串属性设置为单元格

set(myListboxHandle,'String',{'myFirstLine';'mySecondLine'})
如果您想添加另一行,请拨打

contents = get(myListboxHandle,'String');
set(myListboxHandle,[contents;{'another line'}])
对于GUI中的多行文本,请使用
char(10)
而不是
\n
,即

set(someUiControlHandle,'String',sprintf('my first line%smy second line',char(10)))

使用列表框时,通常更容易将选项作为一个整体处理。因此,您可以按如下方式初始化列表框:

set(handles.MyListBox,'String',{'Option 1'});
然后,您可以向列表框中添加选项,如下所示:

newOption = 'Option 2';
oldOptions = get(handles.MyListBox,'String');
set(handles.MyListBox,'String',[oldOptions; {newOption}]);

使用列表框时,通常更容易将选项作为一个整体处理。因此,您可以按如下方式初始化列表框:

set(handles.MyListBox,'String',{'Option 1'});
然后,您可以向列表框中添加选项,如下所示:

newOption = 'Option 2';
oldOptions = get(handles.MyListBox,'String');
set(handles.MyListBox,'String',[oldOptions; {newOption}]);

谢谢,但我需要参数化地添加行。我不知道有多少行。。。你给我举了一个例子,因为我有两行,但我不知道有多少行呢???此外,sprintf用于命令行输出,在这里对我没有任何用处…:(也许我误解了什么……请告诉我我是否正确。@Andry:我添加了一个额外的示例。谢谢,但我需要以参数化方式添加行。我不知道有多少行……你根据有两行的事实给我举了一个示例,但我不知道它们有多少行???此外,sprintf代表commandline输出,在这里对我没有用…:(可能我误解了什么…请告诉我是否正确。@Andry:我添加了一个额外的示例。