2016-11-25 2 views
0

У меня есть JLabel, который отображает динамический текст. Этот текст может быть очень длинным или коротким. Я хочу обернуть текст, и я пробую его таким образом:Обтекание текста в JLabel

panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS)); 
    panel1.setMaximumSize(new Dimension(500, 150)); 
    .... 
    lblInfo=new JLabel(); 
    lblInfo.setText("<html><b>Q: "+ infoObj.getText()+"</b></html>"); 
    ... 
    panel1.add(lblInfo); 

Но это не работает. Когда появляется длинный текст, этот JLabel просто выходит из экрана (вне размера моей панели), и я могу видеть только его конец. Может кто-то, пожалуйста, помогите мне выяснить, в чем проблема?

Я нашел некоторые решения в stackoverflow, используя JTextField вместо метки. Но из-за некоторых требований в моем проекте, я должен сам использовать JLabel в моем случае. Пожалуйста, помогите мне.

+1

Необходимо предложить ширину, как показано в [этот ответ] (http://stackoverflow.com/a/7861833/418556). –

ответ

3

Когда длинный текст приходит, это JLabel просто выходит из экрана

Да, текст будет только заворачивать, когда у вас есть в самом тексте на <br>. <br> в начале текста ничего не делает.

Я нашел несколько решений на StackOverflow, используя JTextField вместо метки

Сомневаюсь. A JTextField ВСЕГДА отображает текст в одной строке.

Предложение вы найдете в форуме использовать JTextArea с обертыванием:

JTextArea textArea = new JTextArea(5, 20); 
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
textArea.setLineWrap(true); 
textArea.setWrapStyleWord(true); 
+0

* "текст будет только обернут, когда в фактическом тексте будет'
'.'
'в начале текста ничего не делает. * * 1) OP использует разметку для жирного шрифта, а не для перерыва , 2) Break - это не единственный и не лучший способ обернуть текст HTML. (Ширина CSS лучше.) –

+0

@ Андр да, я сделал текст полужирным. Если я добавлю
, чтобы обернуть текст в JLabel, я должен сделать это между моим динамически полученным текстом. Так какой же вариант? Я попытался установить размер JLabel. Но когда текст очень длинный, он просто переполняет размер и не обертывает. – developer3

+0

* «Итак, каков другой вариант?» * Установка ширины тела HTML с помощью CSS. См. Пример, связанный с [этим ответом] (http://stackoverflow.com/a/14011645/418556). –

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