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 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!