JLabel的Newline

如何在JLabel显示换行符?

例如,如果我想要:

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

这就是我现在所拥有的:

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

这是显示的内容:

Hello World!blahblahblah

原谅我,如果这是一个愚蠢的问题,我只是学习一些Swing的基本知识…

6 Solutions collect form web for “JLabel的Newline”

<html></html>环绕string,并用<br>分隔线条。

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

您可以使用Jide开源组件中的MultilineLabel组件。

http://www.jidesoft.com/products/oss.htm

你可以做

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

它会自动包装在适当的位置。

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

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

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

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

你可以尝试这样做:

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

这样做的好处是:

  • 它取代所有换行, <br/>而不失败。
  • 它自动地用&lt;&gt; 分别,防止一些渲染破坏。

它所做的是:

  • "<html>" +在开头添加了一个开始的html标签
  • .replaceAll("<", "&lt;").replaceAll(">", "&gt;")转义<>
  • .replaceAll("\n", "<br/>")用你想要的(HTML换行符)标签replace所有换行
  • …和+ "</html>"closures我们的html标签。

PS:我非常遗憾地想起这么一个老post,但无论如何,你的Java有一个可靠的片段!

  • 使JLabel通过设置最大宽度来包装它的文本
  • 用长时间运行的任务结果反复更新JLabel
  • JLabel图像数组
  • JLabel中的多行文本
  • 如何在JLabel中添加超链接