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

18 ビュー (過去 30 日間)
Josh G.
Josh G. 2020 年 12 月 2 日
コメント済み: Josh G. 2020 年 12 月 2 日
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 Center および File ExchangeCharacters and Strings についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by