Java swing:多行标签?
可能重复:
JLabel中的多行文本
我想做这个:
JLabel myLabel = new JLabel(); myLabel.setText("This is\na multi-line string"); 目前这会产生一个显示的标签
 This isa multi-line string 
我想要这样做,而不是:
 This is a multi-line string 
有什么build议么?
谢谢
编辑:实施解决scheme
方法体内:
 myLabel.setText(convertToMultiline("This is\na multi-line string")); 
帮手法:
 public static String convertToMultiline(String orig) { return "<html>" + orig.replaceAll("\n", "<br>"); } 
	
 您可以在JLabels使用HTML 。 要使用它,你的文本必须以<html>开始。 
 将你的文本设置为"<html>This is<br>a multi-line string" ,它应该工作。 
有关更多信息,请参阅Swing教程:JLabel和Multiline标签(HTML) 。
 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); } } 
它对我来说看起来完全一样,但它的丑陋
 另一种简单的方法(但改变文本样式)是使用一个<pre></pre> html块。 
如果您使用的string来自用户input框,则这将持续用户input的任何格式。
例:
 JLabel label = new JLabel("<html><pre>First Line\nSecond Line</pre></html>"); 
在jlabel中编写多行文本的直接过程是:
 JLabel label = new JLabel("<html>First Line<br>Second Line</html>"); 
 在JLabel或任何Swing组件中使用html的问题是,您必须将其样式设置为html,而不是通常的setFont , setForeground等。如果您确定,那很好。 
 否则,您可以使用JIDE中的MultilineLabel ,它扩展了JTextArea 。 这是他们的开源Commom层的一部分。 
JLabel可以接受HTML代码。 也许你可以尝试使用“<br>”标签。
例如:JLabel myLabel = new JLabel(); myLabel.setText(“这是一个多行string”);
我现在没有和我一起使用JDK,所以我不是100%的确认解决scheme,但你可以试试看。
ps请尝试删除<和b和r和>之间的空格。