JLabel中的多行文本

Jes*_*ssy 74 java jlabel

如何将JLabel的文本扩展到另一行?

tdd*_*key 83

您可以通过在代码中放置HTML来实现,因此:

JFrame frame = new JFrame();
frame.setLayout(new GridLayout());
JLabel label = new JLabel("<html>First line<br>Second line</html>");
frame.add(label);
frame.pack();
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

  • 这是我预测未来两年StackOverflow的未来:"我怎样才能在我的JLabel中写出'A`字母?" 答案:让JLabel使用HTML并使用HTML实体`&#65;` (7认同)

tOb*_*Obi 14

如果你想让你的jLabel文本自动调整大小,例如在一个可伸缩的gridbaglayout中,只需将其文本放在html标签中就像这样:

JLabel label = new JLabel("<html>First line and maybe second line</html>");
Run Code Online (Sandbox Code Playgroud)


小智 7

<html></html>标记内键入内容(即"text"属性字段).所以你可以使用<br><P>插入换行符.

例如:

String labelContent = "<html>Twinkle, twinkle, little star,<BR>How I wonder what you are.<BR>Up above the world so high,<BR>Like a diamond in the sky.</html>";
Run Code Online (Sandbox Code Playgroud)

它将显示如下:

闪烁,闪烁,小星星,
我多么想知道你是谁.
在世界之上如此之高,
就像天空中的钻石一样.


use*_*966 6

你也可以使用一个JXLabel该SwingX库

JXLabel multiline = new JXLabel("this is a \nMultiline Text");
multiline.setLineWrap(true);
Run Code Online (Sandbox Code Playgroud)

  • 这个答案看起来是最好的,直到我注意到 JXLabel 既不是标准的 Java,也没有提到它来自哪个库。 (4认同)
  • JXLabel 库:http://javadoc.geotoolkit.org/external/swingx/org/jdesktop/swingx/JXLabel.html (3认同)

小智 5

我已经将JTextArea用于多行JLabel。

JTextArea textarea = new JTextArea ("1\n2\n3\n"+"4\n");
Run Code Online (Sandbox Code Playgroud)

http://docs.oracle.com/javase/7/docs/api/javax/swing/JTextArea.html

  • 不敢相信这被提及更多!在其他地方人们都说使用 HTML 模式,这打破了很多东西,比如额外的间距。 (2认同)

Sco*_*t M 5

这太可怕了。所有这些答案都建议添加到标签文本的开头,并且 Java 11(或更早版本)的 JLabel 文档中没有任何一个词表明如果标签的文本恰好以 开头,则对其进行不同的处理<html>。谁说这在任何地方都有效并且永远有效?将任意文本包装起来并将其交给 html 布局引擎,您可以获得巨大的惊喜。

我已经对建议 JTextArea 的答案投了赞成票。但我要指出的是,JTextArea 并不是一个简单的替代品;它只是一个替代品。默认情况下,它会扩展以填充行,这不是 JLabel 的行为方式。我还没有想出解决办法。