JLabel 中的 Newline

如何在 JLabel中显示换行符?

例如,如果我想:

你好,世界!
等等等等

这就是我现在拥有的:

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

这是显示的内容:

你好,世界,等等等等

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

181912 次浏览

<html></html>包围字符串,用 <br/>分隔线。

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

JLabel is actually capable of displaying some rudimentary HTML, which is why it is not responding to your use of the newline character (unlike, say, System.out).

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

You can use the MultilineLabel component in the Jide Open Source Components.

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 最近也得到了增强,以支持多行。我会推荐它超过多线标签,因为它有许多其他伟大的功能。你可以查看下面 StyledLabel 上的一篇文章。它仍然是免费和开源的。

Http://www.jidesoft.com/articles/styledlabel.pdf

你可以试试这样做:

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标签。

附注: 我很抱歉唤醒这样一个旧的职位,但无论如何,你有一个可靠的代码片段为您的 Java!