JLabel的换行符

mpo*_*z08 96 java formatting user-interface swing jlabel

如何显示换行符JLabel

例如,如果我想:

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

这就是我现在所拥有的:

JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER);
Run Code Online (Sandbox Code Playgroud)

这是显示的内容:

你好世界!blahblahblah

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

fre*_*ass 162

用字符串包围<html></html>并打破线条<br/>.

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

  • WTF !!!! 我可以在java中使用html !!! 好的,我很困惑,谢谢! (10认同)
  • @NitinBansal实际上,在新版本的HTML中建议将其保留为<br>.它被称为无效标签.<br />仍然适用于向后兼容性. (6认同)
  • 知道为什么 JLabel 默认不支持换行吗? (4认同)
  • 只是一点点修正:使用<br />而不仅仅是<br> ...这是推荐的做法(不要错过任何结束标签)...快乐的编码...... (2认同)
  • 实际上,您甚至不必关闭html标签。如果您需要在运行时附加文本,则可以大大简化文本! (2认同)

The*_*a10 8

你可以尝试这样做:

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

这样做的好处是:

  • 它会毫不犹豫地替换所有新行<br/>.
  • 它会自动替换最终<>使用&lt;&gt;分别防止一些渲染破坏.

它的作用是:

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

PS:我很遗憾醒来这么老的帖子,但无论如何,你有一个可靠的Java代码片段!