Dialog UI and sprintf creating unnecessary new lines
1 view (last 30 days)
Show older comments
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 Comments
Walter Roberson
on 18 Aug 2020
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};
Answers (1)
Binbin Qi
on 18 Aug 2020
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 Comments
Binbin Qi
on 19 Aug 2020
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
See Also
Categories
Find more on Environment and Settings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!