bgu*_*uiz 50 java string swing jlabel multiline
可能重复:
JLabel中的多行文本
我想做这个:
JLabel myLabel = new JLabel();
myLabel.setText("This is\na multi-line string");
Run Code Online (Sandbox Code Playgroud)
目前,这会生成一个显示的标签
This isa multi-line string
Run Code Online (Sandbox Code Playgroud)
我希望它能做到这一点:
This is
a multi-line string
Run Code Online (Sandbox Code Playgroud)
有什么建议?
谢谢
编辑:实施解决方案
在方法体中:
myLabel.setText(convertToMultiline("This is\na multi-line string"));
Run Code Online (Sandbox Code Playgroud)
辅助方法:
public static String convertToMultiline(String orig)
{
return "<html>" + orig.replaceAll("\n", "<br>");
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*ang 62
您可以使用HTML
在JLabels
.要使用它,您的文本必须从头开始<html>
.
将文本设置为"<html>This is<br>a multi-line string"
,它应该工作.
有关更多信息,请参阅Swing教程:JLabel和多行标签(HTML).
Whi*_*cal 13
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);
}
}
Run Code Online (Sandbox Code Playgroud)
它看起来对我来说完全一样,但它的丑陋
另一种简单的方法(但稍微改变文本样式)是使用<pre></pre>
html块.
如果您使用的字符串来自用户输入框,则这将保留用户输入的任何格式.
例:
JLabel label = new JLabel("<html><pre>First Line\nSecond Line</pre></html>");
Run Code Online (Sandbox Code Playgroud)
小智 5
JLabel 可以接受 html 代码。也许你可以尝试使用<br>
标签。
例子:
JLabel myLabel = new JLabel();
myLabel.setText("<html> This is a <br> multi-line string </html>");
Run Code Online (Sandbox Code Playgroud)
小智 5
在jlabel中编写多行文本的直接过程是:
JLabel label = new JLabel("<html>First Line<br>Second Line</html>");
Run Code Online (Sandbox Code Playgroud)
在使用HTML的问题JLabel
或任何Swing组件是,你再要的风格为HTML,不跟平时setFont
,setForeground
等等.如果你确定这一说法,细.
否则你可以使用像JIDE的MultilineLabel这样的东西,它可以扩展JTextArea
.它是他们的开源Commom Layer的一部分.