84

如何使 JLabel 的文本延伸到另一行?

4

11 回答 11

91

您可以通过将 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);
于 2009-03-26T12:49:24.180 回答
19

如果您希望 jLabel Text 自动调整大小,例如在可拉伸的 gridbaglayout 中,只需将其文本放在 html 标签中,如下所示:

JLabel label = new JLabel("<html>First line and maybe second line</html>");
于 2012-05-07T22:32:03.070 回答
14

我已将 JTextArea 用于多行 JLabels。

JTextArea textarea = new JTextArea ("1\n2\n3\n"+"4\n");

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

于 2015-11-05T19:52:59.547 回答
9

<html></html>在标签内键入内容(即“文本”属性字段) 。因此,您可以使用<br>or<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>";

它将显示如下:

闪烁,闪烁,小星星,
我多么想知道你是什么。
高高在上,
犹如天上的钻石。

于 2012-12-23T05:30:18.657 回答
6

您还可以使用SwingX库中的JXLabel

JXLabel multiline = new JXLabel("this is a \nMultiline Text");
multiline.setLineWrap(true);
于 2013-10-01T16:00:00.990 回答
4

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

我赞成建议 JTextArea 的答案。但我会注意到 JTextArea 不是替代品。默认情况下,它会扩展以填充行,这不是 JLabel 的行为方式。我还没有想出解决方案。

于 2020-01-25T16:05:26.427 回答
3

在我的情况下,将文本拆分为每一行就足够了\n,然后JLabel为每一行创建一个:

JPanel panel = new JPanel(new GridLayout(0,1));
String[] lines = message.split("\n");
for (String line : lines) {
    JLabel label = new JLabel(line);
    panel.add(label);
}

我在上面用过JOptionPane.showMessageDialog

于 2016-06-29T12:05:37.987 回答
1

您可以使用JTextArea和删除编辑功能来获取普通的只读多行文本。

JTextArea textArea = new JTextArea("line\nline\nline");
textArea.setEditable(false);

JTextArea

setEditable

于 2020-06-04T12:52:13.447 回答
0

可以在 HTML中使用(基本)CSS 。


这个问题是从Multiline JLabels - Java链接的。

于 2011-04-28T10:35:31.880 回答
0
String labelText ="<html>Name :"+name+"<br>Surname :"+surname+"<br>Gender :"+gender+"</html>";
JLabel label=new JLabel(labelText);
label.setVisible(true);
label.setBounds(10, 10,300, 100);
dialog.add(label);
于 2014-11-05T14:46:05.283 回答
-11

为什么你要给出复杂的东西......你可以通过放置“\ n”而不是html标签来做到这一点

于 2013-07-09T08:20:35.160 回答