How can I get a string with a line break to be centered in a uicontrol?

17 views (last 30 days)
I'm trying to center text with a line break in it in a figure, but the second line is never centered correctly. Here's an example:
f = figure('Position',[300,300,600,600]);
uicontrol('Parent',f,...
'Style','Text',...
'HorizontalAlignment','center',...
'Position',[20,300,560,280],...
'String',sprintf('This is a string that should be centered. It''s more apparent with longer lines.\nThis line definitely isn''t centered.'));
The second line is indented, but not centered. This is in R2020b if it matters. How can I get it to center correctly?
  2 Comments
Rik
Rik on 2 Dec 2020
Sometimes assigning a cellstr works better. I don't remember if this is such a case.
Josh G.
Josh G. on 2 Dec 2020
Thanks, that fixed it. I passed the strings in in a cell array instead of through sprintf and now they're both centered correctly.

Sign in to comment.

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 2 Dec 2020
I don't know why, but try and error and then got lucky.
%%
f = figure('Position',[300,300,600,600]);
uicontrol('Parent',f,...
'Style','Text',...
'HorizontalAlignment','center',...
'Position',[20,300,560,80],'backgroundcolor','r',...
'String',["This is a string that should be centered. It''s more apparent with longer lines.","Short line centered."]);
Comparing to
%%
f = figure('Position',[300,300,600,600]);
uicontrol('Parent',f,...
'Style','Text',...
'HorizontalAlignment','center',...
'Position',[20,300,560,80],'backgroundcolor','r',...
'String',['This is a string that should be centered. It''s more apparent with longer lines.',newline,'Short line not centered.']);

More Answers (0)

Categories

Find more on Characters and Strings in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!