117

如何在 中显示换行符JLabel

例如,如果我想要:

你好世界!
等等等等等等

这就是我现在所拥有的:

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

这是显示的内容:

你好世界!blahblahblah

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

4

6 回答 6

190

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

JLabel l = new JLabel("<html>Hello World!<br/>blahblahblah</html>", SwingConstants.CENTER);
于 2009-07-07T02:33:20.377 回答
13

您可以尝试这样做:

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 代码片段!

于 2016-04-23T19:10:02.957 回答
3

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

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

于 2009-07-07T07:43:09.720 回答
2

你可以做

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

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

于 2011-02-08T13:10:20.830 回答
2

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

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

于 2011-11-04T15:56:30.677 回答
1

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

如果您输入相应的 HTML 并使用<BR>,您将获得换行符。

于 2009-07-07T02:39:47.900 回答