Java JLabel, разбить текст на следующую строку? - PullRequest
9 голосов
/ 15 февраля 2012

Прошло некоторое время с тех пор, как я задал вопрос!

Я занимаюсь разработкой приложения на Java, в котором используется JLabels.В любом случае, как вы можете или не можете видеть из рисунка ниже, текст с надписью Category Test обрезается и в итоге выдает Categor....Есть ли способ, которым я могу «разбить» текст, как только он заполнит ширину надписи?Вот изображение:

enter image description here

Что я сделал

Я использовал JTextPane примерно так:

    JTextPane text = new JTextPane();
    SimpleAttributeSet attr = new SimpleAttributeSet();   

    StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER);  

    pane.add(text, c);

Затем я добавил свой текст, но все равно спасибо!

Ответы [ 3 ]

10 голосов
/ 15 февраля 2012

JLabel s не может сделать это по умолчанию. Но JLabel s имеет некоторую поддержку html, поэтому JLabel с текстом <html>First Line<br />Second Line</html> будет отображаться в двух строках.

Если вам нужен компонент, который может разбивать строки самостоятельно, взгляните на JTextArea.

2 голосов
/ 15 февраля 2012

Насколько я помню, вам нужно использовать JTextArea, если вы хотите textwrap.Джабель не делает этого.

1 голос
/ 16 февраля 2012

Вы можете использовать компонент StyledLabel из проекта с открытым исходным кодом JIDE Common Layer по адресу http://java.net/projects/jide-oss/.

Проблема с html-подходом JLabel заключается в том, что он не переносится автоматически и примерно в 20-40 раз медленнее, чем обычный JLabel.

Проблема с подходом JTextArea или JTextPane состоит в том, что он имеет странный размер и также в 20 раз медленнее.

StyledLabel расширяет JLabel. Автоматическая перенос строки - лишь одна из многих добавляемых функций. И производительность такая же высокая, как у простого JLabel.

Надеюсь, это поможет.

...