java - 如何在没有 HTML 的情况下获得多行 JLabel(或看起来完全相同的 JTextArea)

标签 java swing jlabel jtextarea multiline

我不敢相信多行 JLabel 的最快解决方案是以下一个(文本来自 var,所以我不想每隔 x 个字符手动放置 HTML 代码,它太丑了):

public class JMultilineLabel extends JTextArea{
    private static final long serialVersionUID = 1L;
    public JMultilineLabel(String text){
        super(text);
        setEditable(false);  
        setCursor(null);  
        setOpaque(false);  
        setFocusable(false);  
        setFont(UIManager.getFont("Label.font"));      
        setWrapStyleWord(true);  
        setLineWrap(true);
    }
} 

...确定这不是处理此问题的更好方法????

最佳答案

如果你想要一个多行标签,那么你只需使用 HTML在其文本中,因为他们支持它的使用。因此,使用线闸标签</br><p></p> 中换行或分行段落标签。

不要忘记标记您要为 JLabel 使用 HTML通过以 <html> 开始其文本标签。

More available here.

BTW 忘记查看是否还有其他关于JLabel的相关问题使用,至少有几个,检查thisthis . :)


编辑:

对于工作示例,显示不同的方法,没有设置样式并使用段落和标签占用可用空间,请参见下面:

import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.*;

public class LabelHTMLAutoResize {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                JPanel p = new JPanel(new BorderLayout());
                JLabel l = new JLabel("<html><p> Some verrrry long text  Some verrrry long  Some verrrry long text dsa ads oiosi o</p>");
                l.setVerticalAlignment(SwingConstants.TOP);
                l.setOpaque(true);
                l.setBackground(Color.green);
                p.add(l);
                f.setContentPane(p);
                /* good practice is to use f.pack(); and let the size be automatically calculated but we want to show line wrapping thus frame size is set */
                f.setSize(200, 200);
                f.setVisible(true);
            }
        });
    }
}

关于java - 如何在没有 HTML 的情况下获得多行 JLabel(或看起来完全相同的 JTextArea),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11033800/

相关文章:

java - 在实际关闭主线程之前是否总是需要等待每个线程终止?

java - Java抽象方法中使用通配符和声明泛型的区别

java - 当按下 JButton 时,JTable 第二次变为空白

java - 如何设置 jframe 外观

java - Qt Jambi 死了吗?

java - 添加自定义背景时 JButton 和 JLabel 消失

java - 有没有更好的方法来为许多分机做文件过滤?

java - 跳过并选择 java arraylist 的选项?

java - 如何禁用 JLabel 的自动 HTML 支持?

java - 使用长时间运行任务的结果重复更新 JLabel