如何在中显示换行符 JLabel?

例如,如果我想要:

你好世界!
等等等等等等

这就是我现在所拥有的:

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

这是显示的内容:

世界你好!巴拉巴拉巴拉

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

有帮助吗?

解决方案

环绕与<html></html>字符串,并用<br/>打破线。

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

其他提示

您可以尝试这样做:

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

可以在祭地开源组件使用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。基德的StyledLabel也在最近增强,可以支持多行。我会推荐它在MultilineLabel因为它具有许多其他强大的功能。你可以看看下面StyledLabel的文章。它仍然是自由和开放源码。

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

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

如果你把相应的HTML和使用<BR>,你会得到你的换行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top