Dialog UI and sprintf creating unnecessary new lines
조회 수: 1 (최근 30일)
이전 댓글 표시
I am trying to create a dialog box and set the text value inside it using the uicontrol function. The actual text I use is a combination of 3 different string variables that I combine using sprintf.
ui_message = sprintf('%s\n%s\n%s',line_1,line_2,line_3)
However, in cases where line_2 is a string that is longer than the dialog box itself, it moves down onto the next line (which is desirable) but it also adds a new line between line_1 and line_2!
So where I want my results to appear in the ui dialog box as (self explanatory what corresponds to which "line_N" variable"):
"Hello"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"Goodbye"
For some reason I get
"Hello"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"Goodbye"
instead. If the AAAAA string overlaps two lines, then there are two spaces between the first and second lines.
댓글 수: 3
Walter Roberson
2020년 8월 18일
Unless something else outside your control is generating the initial ui_mess, I would just have directly coded
ui_mess = {line_1, line_2, line_3};
답변 (1개)
Binbin Qi
2020년 8월 18일
The following is my code. It is can work normally. Can you give your code here?
function mydialog(line1,line2,line3)
if nargin == 0
line1 = 'Hello';
line2 = 'AAAAAAAAAAAAA';
line3 = 'Goodbye';
end
ui_message = @(line_1,line_2,line_3)sprintf('%s\n%s\n%s',line_1,line_2,line_3);
d = dialog('Position',[300 300 250 150],'Name','My Dialog');
uicontrol('Parent',d,...
'Style','text',...
'Position',[20 80 210 40],...
'String',ui_message(line1,line2,line3));
uicontrol('Parent',d,...
'Position',[85 20 70 25],...
'String','Close',...
'Callback','delete(gcf)');
end
댓글 수: 4
Binbin Qi
2020년 8월 19일
ok ,I think @Walter Roberson is right, you can use cell, like the following code.
function mydialog(line1,line2,line3)
if nargin == 0
line1 = 'Hello';
line2 = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
line3 = 'Goodbye';
end
ui_message = @(line_1,line_2,line_3){line_1,line_2,line_3};
d = dialog('Position',[300 300 550 500],'Name','My Dialog');
uicontrol('Parent',d,...
'Style','text',...
'Position',[20 200 210 140],...
'HorizontalAlignment','left',...
'String',ui_message(line1,line2,line3));
uicontrol('Parent',d,...
'Position',[85 20 70 25],...
'String','Close',...
'Callback','delete(gcf)');
end
참고 항목
카테고리
Help Center 및 File Exchange에서 Environment and Settings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!