Java swing:多行标签?

2022-08-31 17:30:33

可能的重复:
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>");
}

答案 1

您可以在 中使用。要使用它,您的文本必须以 开头。HTMLJLabels<html>

将文本设置为“并且它应该可以正常工作”。"<html>This is<br>a multi-line string"

有关详细信息,请参阅 Swing 教程:JLabel多行标签 (HTML)。


答案 2
public class JMultilineLabel extends JTextArea{
    private static final long serialVersionUID = 1L;
    public JMultilineLabel(String text){
        super(text); // According to Mr. Polywhirl, this might improve it -> text + System.lineSeparator()
        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);
    }
} 

对我来说,它看起来完全一样,但它很丑陋