2012-02-15 18 views
9

Прошло некоторое время, так как я задал вопрос!Java JLabel, перерыв текста на следующую строку?

Я разрабатываю приложение на 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); 

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

+0

Я бы получил строку «Категория» оттуда. Это совершенно не нужно. Вместо этого, возможно, есть «Категории» в одном JLabel над вашей сеткой. –

+0

Uhhh, это заполнители. Пользователь определит, что говорят категории. Вы когда-нибудь видели опасность? –

ответ

10

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

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

+0

Сейчас я +1, но я хочу посмотреть, не могу ли я найти другой способ. Благодарю. –

+0

@ Ken сделал больше поиска, 'JLabel's only display 1 line, если вы не используете html. – Jeffrey

+0

D: Хорошо, я посмотрю, что я могу сделать; большое спасибо! –

2

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

1

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

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

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

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

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

Смежные вопросы