JLabel中的换行符


107

如何在中显示换行符JLabel

例如,如果我想要:

你好,世界!
等等等等等等

这就是我现在所拥有的:

JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER);

这是显示的内容:

你好世界!

如果这是一个愚蠢的问题,请原谅我,我只是在学习一些Swing基础知识...


1
绝对不是一个愚蠢的问题。花了我一段时间找出html也有可能。
西蒙·巴尔

Answers:


174

用包围字符串,<html></html>并用断开线<br/>

JLabel l = new JLabel("<html>Hello World!<br/>blahblahblah</html>", SwingConstants.CENTER);

3
只是一点校正:使用<br />而不是<br> ...这是推荐的操作方式(不要错过任何结束标签)...快乐的编码...
Nitin Bansal 2012年

6
@NitinBansal实际上,在新版HTML中建议将其保留为<br>。这称为无效标记。<br />仍然可以向后兼容。
gsingh2011

@ gsingh2011:好的...那就更好了:-)
Nitin Bansal

3
为什么JLabel默认不支持换行符?
ApproachingDarknessFish

2
实际上,您甚至不必关闭html标签。如果您需要在运行时附加文本,则可以大大简化文本!
罗伯托

9

您可以尝试执行以下操作:

myLabel.setText("<html>" + myString.replaceAll("<","&lt;").replaceAll(">", "&gt;").replaceAll("\n", "<br/>") + "</html>")

这样做的好处是:

  • 它将所有换行符替换为 <br/>,而不会失败。
  • 它会自动将最终的<和分别替换>&lt;&gt;,以防止某些渲染破坏。

它的作用是:

  • "<html>" +html在开头添加一个开始标签
  • .replaceAll("<", "&lt;").replaceAll(">", "&gt;")逃脱<>方便
  • .replaceAll("\n", "<br/>")br(HTML 换行)标记替换所有换行符
  • ...并在最后+ "</html>"关闭html标签。

PS:很抱歉唤醒这么老的文章,但是无论如何,您都有一个可靠的Java代码段!



2

你可以做

JLabel l = new JLabel("<html><p>Hello World! blah blah blah</p></html>", SwingConstants.CENTER);

它将自动在适当的地方包装它。


2

感谢Aakash推荐JIDE MultilineLabel。JIDE的StyledLabel最近也得到了增强,以支持多行。我会在MultilineLabel上推荐它,因为它还有许多其他很棒的功能。您可以在下面的StyledLabel上查看文章。它仍然是免费和开源的。

http://www.jidesoft.com/articles/StyledLabel.pdf


1

JLabel实际上能够显示一些基本的HTML,这就是为什么它不响应您对换行符的使用的原因(与System.out不同)。

如果放入相应的HTML并使用<BR>,则会得到换行符。


叹了口气,我试图添加反引号来转义您的html,但是它说除非添加至少6个字符,否则我无法编辑。
AnnanFay 2011年

1
@Annan在HTML中不需要。您在说的是支持XHTML。stackoverflow.com/questions/1946426/html-5-is-it-br-br-or-br
b1nary.atr0phy

@ b1naryatr0phy不,问题已解决:)原始帖子具有文字<br>标记,该标记由堆栈溢出格式化为帖子中的文字换行符。
AnnanFay 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.