По умолчанию Swing не переносит текст. Если вы укажете размер для JLabel, он закрасит только ту часть текста, которая подходит, а затем добавит «...» в конец.
Как и предполагалось, вы можете использовать HTML для включения переноса строк. Однако недавно я создал собственный пользовательский интерфейс Swing UI, чтобы добиться этого, и даже больше: MultiLineLabelUI .
Это обернет ваш текст в соответствии с доступным пространством, а также с учетом жестких разрывов строк. Если вы решите попробовать, это так просто:
JLabel label = new JLabel("Text that'll wrap if necessary");
label.setUI(MultiLineLabelUI.labelUI);
Или в качестве альтернативы используйте пользовательский класс MultiLineLabel
, который в дополнение к переносу текста поддерживает вертикальное и горизонтальное выравнивание текста.
UPDATE
Я потерял домен с исходными примерами кода. Теперь его можно просматривать на github: https://github.com/sasjo/multiline