Java:JLabels中的换行符?

问题描述 投票:24回答:7

我正在尝试使用多行文本制作一个Swing JLabel。添加起来很好,但是换行符没有通过。我该怎么做呢?或者,我可以只为JLabel指定最大宽度并知道文本会像div一样自动换行吗?

    private void addLegend() {
        JPanel comparisonPanel = getComparisonPanel();

        //this all displays on one line
        JLabel legend = new JLabel("MMM FFF MMM FFFO O OOM   M MMMM.\nMMM FFF MMM FFFO O OOM   M MMMM.\nMMM FFF MMM FFFO O OOM   M MMMM.\n"); 

        comparisonPanel.add(legend);        
    }
java user-interface swing jlabel
7个回答
44
投票

例如在setText中使用HTML

myLabel.setText("<html><body>with<br>linebreak</body></html>");

10
投票

如果在html中设置段落宽度,则可以自动换行。


10
投票

默认情况下,Swing不会换行。如果在JLabel上指定大小,它将仅绘制适合文本的部分,然后在末尾添加“ ...”。


6
投票

您可以将HTML放入JLabel内,并使用换行标记实现此目的。


4
投票

关于在JTextArea中使用换行功能呢?


2
投票

简单,请使用HTML。 Java Swing组件虽然不提供对HTML的“出色”支持,但您可以将其用于如此简单的目的。


2
投票

我没有为标签指定最大宽度,但是您可以指定具体宽度。通过测量JLabel的当前宽度,我们只能在JLabel的宽度大于我们的maxWidth时应用新的固定宽度:

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