可能重复:
Multiline text in JLabel
我想这样做:
JLabel myLabel = new JLabel();
myLabel.setText("This is\na multi-line string");
目前,这会产生一个显示
的标签This isa multi-line string
我希望它能够做到这一点:
This is
a multi-line string
有什么建议吗?
谢谢
编辑:实施解决方案
在方法体中:
myLabel.setText(convertToMultiline("This is\na multi-line string"));
帮助方法:
public static String convertToMultiline(String orig)
{
return "<html>" + orig.replaceAll("\n", "<br>");
}
答案 0 :(得分:61)
您可以在HTML
中使用JLabels
。要使用它,您的文字必须以<html>
开头。
将文字设置为"<html>This is<br>a multi-line string"
,它应该有效。
有关详细信息,请参阅Swing Tutorial: JLabel和Multiline label (HTML)。
答案 1 :(得分:12)
public class JMultilineLabel extends JTextArea{
private static final long serialVersionUID = 1L;
public JMultilineLabel(String text){
super(text);
setEditable(false);
setCursor(null);
setOpaque(false);
setFocusable(false);
setFont(UIManager.getFont("Label.font"));
setWrapStyleWord(true);
setLineWrap(true);
}
}
对我来说看起来完全一样,但它的丑陋
答案 2 :(得分:6)
另一种简单的方法(但稍微改变文本样式)是使用<pre></pre>
html块。
如果您使用的字符串来自用户输入框,这将保留用户输入的任何格式。
示例:
JLabel label = new JLabel("<html><pre>First Line\nSecond Line</pre></html>");
答案 3 :(得分:5)
在jlabel中编写多行文本的直接过程是:
JLabel label = new JLabel("<html>First Line<br>Second Line</html>");
答案 4 :(得分:5)
在JLabel
或任何Swing组件中使用html的问题是,您必须将其设置为html样式,而不是通常的setFont
,setForeground
等。如果您'好的,好的。
否则,您可以使用JIDE中MultilineLabel之类的内容,扩展JTextArea
。这是他们的开源Commom Layer的一部分。
答案 5 :(得分:3)
JLabel可以接受HTML代码。也许您可以尝试使用<br>
标记。
示例:
JLabel myLabel = new JLabel();
myLabel.setText("<html> This is a <br> multi-line string </html>");
答案 6 :(得分:3)