Multiline JLabels - Java

4 java swing jlabel

我想要JLabel多行格式的文本,否则文本会太长.我们怎样才能在Java中做到这一点?

Sin*_*hot 11

如果您不介意将标签文本包装在html标签中,那么当JLabel的容器宽度太窄而无法容纳所有内容时,JLabel会自动对其进行自动换行.例如,尝试将其添加到GUI,然后将GUI的大小调整得太窄 - 它将换行:

new JLabel("<html>This is a really long line that I want to wrap around.</html>");
Run Code Online (Sandbox Code Playgroud)


Mic*_*ark 8

我建议创建自己的自定义组件,在包装时模拟JLabel样式:

import javax.swing.JTextArea;

public class TextNote extends JTextArea {
    public TextNote(String text) {
        super(text);
        setBackground(null);
        setEditable(false);
        setBorder(null);
        setLineWrap(true);
        setWrapStyleWord(true);
        setFocusable(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你只需要打电话:

new TextNote("Here is multiline content.");
Run Code Online (Sandbox Code Playgroud)

textNote.setRows(2)如果要pack()正确计算父组件的高度,请确保设置行数().