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

18 次查看(过去 30 天)
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 个评论
Rik
Rik 2020-12-2
Sometimes assigning a cellstr works better. I don't remember if this is such a case.
Josh G.
Josh G. 2020-12-2
Thanks, that fixed it. I passed the strings in in a cell array instead of through sprintf and now they're both centered correctly.

请先登录,再进行评论。

采纳的回答

Fangjun Jiang
Fangjun Jiang 2020-12-2
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.']);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by