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"));

辅助方法:

 public static String convertToMultiline(String orig)
{
    return "<html>" + orig.replaceAll("\n", "<br>");
}

原文由 bguiz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 619
2 个回答

您可以在 HTML JLabels 。要使用它,您的文本必须以 <html>

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

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

原文由 Peter Lang 发布,翻译遵循 CC BY-SA 2.5 许可协议

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);
    }
}

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

原文由 Whimusical 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏