Java: разрывы строки в JLabels?

Попытка:

if (!(typeof(callback)=='undefined')) {...}
23
задан Nick Heiner 3 December 2009 в 19:14
поделиться

4 ответа

Используйте HTML в setText, например,

myLabel.setText("<html><body>with<br>linebreak</body></html>");
45
ответ дан 29 November 2019 в 00:52
поделиться

По умолчанию Swing не переносит текст. Если вы укажете размер в JLabel, он закрасит только ту часть текста, которая подходит, а затем добавит «...» в конец.

Как было предложено, вы можете использовать HTML для включения переноса строк. Однако не так давно я создал настраиваемый делегат Swing UI, чтобы добиться этого и даже большего: MultiLineLabelUI .

Он будет переносить ваш текст, чтобы он соответствовал доступному пространству, а также учитывал жесткие разрывы строк. Если вы решите попробовать, это очень просто:

JLabel label = new JLabel("Text that'll wrap if necessary");
label.setUI(MultiLineLabelUI.labelUI);

Или, в качестве альтернативы, используйте пользовательский класс MultiLineLabel , который в дополнение к переносу текста поддерживает вертикальное и горизонтальное выравнивание текста.

ОБНОВЛЕНИЕ

Я потерял домен с исходными образцами кода. Теперь его можно посмотреть на github: https: // github. com / sasjo / multiline

9
ответ дан 29 November 2019 в 00:52
поделиться

Вы можете поместить HTML внутри JLabel и использовать для этого тег разрыва строки.

6
ответ дан 29 November 2019 в 00:52
поделиться

А как насчет использования функции упаковки в JTextArea ?

    String text = "some really long string that might need to"+
                  "be wrapped if the window is not wide enough";

    JTextArea multi = new JTextArea(text);
    multi.setWrapStyleWord(true);
    multi.setLineWrap(true);
    multi.setEditable(false);

    JLabel single = new JLabel(text);

    JPanel textpanel = new JPanel(new GridLayout(2,1));
    textpanel.add(multi);
    textpanel.add(single);

    JFrame frame = new JFrame();
    frame.add(textpanel);
    frame.pack();
    frame.setVisible(true);
3
ответ дан 29 November 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: