的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
任何建议?
感谢您
编辑:实施的解决方案
在方法的体:
myLabel.setText(convertToMultiline("This is\na multi-line string"));
Helper方法:
public static String convertToMultiline(String orig)
{
return "<html>" + orig.replaceAll("\n", "<br>");
}
解决方案
可以在HTML
使用JLabels
。要使用它,你的文字有开始与<html>
。
您的文字设置为"<html>This is<br>a multi-line string"
,它应该工作。
请参阅摇摆教程:JLabel的一>和多行标签(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);
//According to Mariana this might improve it
setBorder(new EmptyBorder(5, 5, 5, 5));
setAlignmentY(JLabel.CENTER_ALIGNMENT);
}
}
这完全找我相同,但其丑陋
另一个简单的方法(但改变文本样式位)是使用<pre></pre>
HTML块。
这将持续存在任何格式,如果你使用的是字符串从用户输入框中输入进来的用户。
示例:
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
等,如果你真行与精细。
否则,你可以使用像 MultilineLabel 从基德,延伸JTextArea
。它的部分他们的开源的层常见合。
的JLabel可以接受的HTML代码。也许你可以尝试使用<br>
标签。
示例:
JLabel myLabel = new JLabel();
myLabel.setText("<html> This is a <br> multi-line string </html>");
不隶属于 StackOverflow