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和>之间的空格。