JLabel中的多行文本

时间:2009-03-26 12:20:59

标签: java jlabel

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

11 个答案:

答案 0 :(得分:77)

你可以把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);

答案 1 :(得分:14)

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

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

答案 2 :(得分: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>";

它将显示如下:

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

答案 3 :(得分:4)

您还可以使用JXLabel中的the SwingX library

JXLabel multiline = new JXLabel("this is a \nMultiline Text");
multiline.setLineWrap(true);

答案 4 :(得分:4)

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

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

答案 5 :(得分:3)

我已将JTextArea用于多行JLabel。

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

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

答案 6 :(得分:1)

就我而言,每隔\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

中使用了上述内容

答案 7 :(得分:1)

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

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

JTextArea

setEditable

答案 8 :(得分:0)

HTML中可以use (basic) CSS


此问题与Multiline JLabels - Java相关联。

答案 9 :(得分: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);

答案 10 :(得分:-6)

为什么要提供复杂的东西...你可以通过输入“\ n”代替html标签来实现它