JLabel中的多行文字


77

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


1
@ChrisDennett -这也行,只是接近一个DUP没有任何智能言论:)
ripper234

我认为那是在我什至没有表决权关闭之前。
克里斯·丹尼特

Answers:


85

您可以通过将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);

我有两个面板。如何使第二个面板出现在下一行?例如lbl1-第一行,lbl2-第二行。JLabel lbl1 =新的JLabel(“ Label 1:”); panel.add(lbl1); JLabel lbl2 =新的JLabel(“ Label 2”); panel.add(lbl2);
Jessy

1
如果标签的默认文本样式与html的默认文本样式不匹配,则可能会出现一些格式问题。尽管十分之九会奏效...
汤姆·霍顿-大头针

1
对于彼此下面的2个面板,只需使用具有2行1列的GridLayout。
简单易行

7
这是我预测从现在起两年后StackOverflow的未来:“如何A在JLabel中写信?” 答案:让JLabel使用HTML并使用HTML实体&#65;
Simon Forsberg,2013年

切记设置标签的首选尺寸以使包装生效。
treecoder,2014年

16

如果您想让jLabel Text自动调整大小,例如在可拉伸的gridbaglayout中,其大小足以将其文本放入html标签中,如下所示:

JLabel label = new JLabel("<html>First line and maybe second line</html>");


8

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

它将显示如下:

一闪一闪,小星星,
我怎么知道你是什么。
如此高高的世界,
就像天空中的钻石。



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


3

这太恐怖了。所有这些答案都建议添加到标签文本的开头,而Java 11(或更早版本)的文档中没有一个单词可以用于JLabel来建议如果标签文本恰好以开头,则对标签文本的处理方式有所不同<html>。谁说这种方法无处不在,而且永远都会有效?而且,将任意文本包装进去并将其交给html布局引擎时,您可能会获得很大的惊喜。

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


1

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

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

JTextArea

setEditable



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);

尽管此代码可以回答问题,但是提供有关为什么和/或如何回答问题的其他上下文将大大提高其长期价值。请编辑您的答案以添加一些说明。
Toby Speight

-7

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


它显然不适用于JLabels,仅适用于其他TextComponents或JXlabels
kuranes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.