Обработка возврата каретки / перевода строки в пользовательских элементах управления MATLAB GUI - PullRequest
1 голос
/ 18 февраля 2011

У меня есть программа MATLAB, которую я разрабатываю, чтобы выполнить некоторые операции обработки изображений, и мне нужно использовать пользовательский элемент управления в пользовательском интерфейсе MATLAB GUI, который я создал ad-hoc.

Это пользовательский элемент управления List Box, и я хотел бы вставить текст. Ну, проблема не в том, что я не могу поместить текст туда, я могу сделать это с помощью этого вызова:

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()).

Что делать? Спасибо

Ответы [ 2 ]

4 голосов
/ 18 февраля 2011

Для списка установите свойство строки в ячейку

set(myListboxHandle,'String',{'myFirstLine';'mySecondLine'})

Если вы хотите добавить другую строку, позвоните

contents = get(myListboxHandle,'String');
set(myListboxHandle,[contents;{'another line'}])

Для многострочного текста в графическом интерфейсе в противном случае используйте char(10) вместо \n, т.е.

set(someUiControlHandle,'String',sprintf('my first line%smy second line',char(10)))
0 голосов
/ 18 февраля 2011

При работе со списками обычно проще иметь дело с опциями в виде массива ячеек из строк . Итак, вы бы инициализировали свой список следующим образом:

set(handles.MyListBox,'String',{'Option 1'});

И затем вы можете добавить параметры в список, например, так:

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