有没有办法使System.lineSeparator()在JLabel字符串中工作? [重复]

问题描述 投票:0回答:2

此问题已经在这里有了答案:

我设置了一个Java swing应用程序,并试图使我的JLabel字符串完全显示为:

Geboortedatum

yy-mm-dd

我曾尝试制作字符串变量,并将它们与中间的System.lineSeparator()放在一起。

String lineGeboorte =“ Geboortedatum”;字符串lineDateFormat =“ YY-MM-DD”;

    //HHHMMMMMMMMMMMMM???????????????????
    String lineLabelGeboorte = lineGeboorte + System.lineSeparator() + lineDateFormat;
    lblGeboortedatum = new JLabel (lineLabelGeboorte);

    System.out.println(lineLabelGeboorte);
    lblGeboortedatum.setFont(new Font("Tahoma", Font.PLAIN, 12));
    lblGeboortedatum.setForeground(Color.WHITE);
    lblGeboortedatum.setBounds(278, 0, 96, 34);
    panel.add(lblGeboortedatum);

我希望“ Geboortedatum ...”的输出为:

Geboortedatum

yy-mm-dd

java string swing jlabel
2个回答
1
投票

尽管此问题已经回答,我想提供更多背景信息。

官方文档指出,允许您在大多数Swing组件中使用纯HTML。您可以找到完整的参考文献here。最重要的部分是:

要指定组件的文本具有HTML格式,只需将标签在文本开头,然后在其中使用任何有效的HTML其余的。

因此,一个有效的例子是

new JButton("<html>Line one<br>Line two</html>");

因此,可以使用<br>使用纯HTML换行。 (插入单个换行符)。您还可以使用其他各种HTML标记来设置组件的样式,例如

  • [<b>]粗体文本样式,例如this
  • [<i>]斜体文字样式,例如this

JLabel的完整概述,可以发现here,它比实际的Javadoc更好,因为后者没有提到可以使用HTML。


1
投票

您可以执行以下操作:

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class TestJFrame extends JFrame {
    public static void main(String[] args) {
        JFrame f = new JFrame("label");
        JLabel l = new JLabel();
        String hello="Hello";
        String world="World!";
        String label="<html><body>"+hello+"<br>"+world+"</body></html>";
        l.setText(label);
        JPanel p = new JPanel();
        p.add(l);
        f.add(p);
        f.setSize(300, 300);
        f.show();
    }
}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.