代码之家  ›  专栏  ›  技术社区  ›  Maxxx

格式化字符串在JLabel中的显示方式

  •  0
  • Maxxx  · 技术社区  · 6 年前

    如何使JLabel的文本扩展到另一行?

    0 回复  |  直到 16 年前
        1
  •  87
  •   tddmonkey    16 年前

    您可以通过在代码中添加HTML来实现,因此:

    JFrame frame = new JFrame();
    frame.setLayout(new GridLayout());
    JLabel label = new JLabel("<html>First line<br>Second line</html>");
    frame.add(label);
    frame.pack();
    frame.setVisible(true);
    
        2
  •  17
  •   tObi    13 年前

    如果您希望jLabel文本自动调整大小(例如在可拉伸的gridbaglayout中),只需将其文本放入html标记中即可,如下所示:

    JLabel label = new JLabel("<html>First line and maybe second line</html>");
    
        3
  •  14
  •   Seseel Lybon    9 年前

    JTextArea textarea = new JTextArea ("1\n2\n3\n"+"4\n");
    

    http://docs.oracle.com/javase/7/docs/api/javax/swing/JTextArea.html

        4
  •  8
  •   Wouter Asim    8 年前

    <html></html> 标签。所以你可以用 <br> <P> 插入换行符。

    String labelContent = "<html>Twinkle, twinkle, little star,<BR>How I wonder what you are.<BR>Up above the world so high,<BR>Like a diamond in the sky.</html>";
    

    它将显示如下:

    闪烁,闪烁,小星星,
    我真想知道你是什么。
    高高在上,
    就像天上的钻石。

        5
  •  6
  •   Suma    10 年前

    JXLabel the SwingX library .

    JXLabel multiline = new JXLabel("this is a \nMultiline Text");
    multiline.setLineWrap(true);
    
        6
  •  4
  •   Scott M    5 年前

    这太可怕了。所有这些答案都建议添加到标签文本的开头,而且java11(或更早版本)文档中没有一个词可以让JLabel建议,如果标签的文本恰好以 <html> . 谁说这在任何地方都有效,而且永远有效?你可以得到大,大惊喜包装任意文本,并把它交给一个html布局引擎。

    我把这个问题的答案投了赞成票。但我要注意的是,JTextArea不是一个drop-in替换;默认情况下,它会扩展以填充行,这不是JLabel的工作方式。我还没有想出解决办法。

        7
  •  3
  •   Dediqated Munish Katoch    8 年前

    在我的情况下,在每一个时间段分割文本就足够了 \n 然后创建一个 JLabel 每行:

    JPanel panel = new JPanel(new GridLayout(0,1));
    String[] lines = message.split("\n");
    for (String line : lines) {
        JLabel label = new JLabel(line);
        panel.add(label);
    }
    

    JOptionPane.showMessageDialog

        8
  •  1
  •   willmcpherson2    5 年前

    你可以用 JTextArea 并删除编辑功能以获得正常的只读多行文本。

    JTextArea textArea = new JTextArea("line\nline\nline");
    textArea.setEditable(false);
    

    JTextArea

    setEditable

        10
  •  0
  •   Harun ERGUL    9 年前
    String labelText ="<html>Name :"+name+"<br>Surname :"+surname+"<br>Gender :"+gender+"</html>";
    JLabel label=new JLabel(labelText);
    label.setVisible(true);
    label.setBounds(10, 10,300, 100);
    dialog.add(label);
    
        11
  •  -8
  •   Nits    11 年前

    为什么你要给复杂的东西…你可以把“\n”而不是html标签