如何将JLabel的文本扩展到另一行?
答案 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);
答案 8 :(得分:0)
答案 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标签来实现它