2013-12-10 6 views
0

Это, вероятно, очень простой вопрос, но так как я не знаю, что я ищу, я не мог добиться успеха, чтобы найти решение ...Использование stringWidth с HTML строки

Я используя JLabel, внутри которого я помещаю строку html. Моя строка получена Jsoup. Затем я хочу изменить размер JLabel, чтобы он соответствовал строке. Для этого я использую метод FontMetrics.stringWidth, который отлично работает ... За исключением случаев, когда у меня есть специальные символы, такие как «è», «ç», «ô» и т. Д. В этом случае символы становятся sth, как ô, или é, и stringWidth учитывает это.

, например, FontMetrics.stringWidth (HTMLFormating («é»)) даст мне stringWidth из (»é„), который гораздо больше ... Мой ожидаемый результат в том, что, когда я измерить длину“é ССЭЧ «например, я получаю тот же результат, что и для« echec »

Какое решение? Есть ли способ преобразовать строку html в «нормальную» строку? Или я должен использовать другой метод?

Благодарим за помощь!

+1

Просто [проверить предпочтительный размер этикетки] (http://stackoverflow.com/a/5767825/418556) после того, как 'String' был добавлен. –

+0

@ AndrewThompson, вы правы! Он отлично работает. Благодаря ! – Sharcoux

ответ

0

Возможно, вы должны опубликовать код, который используется для изменения размера JLabel. Я затрону эту проблему, хотя, возможно, это проблема, вызвавшая вашу проблему.

public void resize(String newText){ 
    label.setText(newText); 
    label.setFont (font); 
    int labelW = (int) Math.ceil (label.getPreferredSize().getWidth()); 
    int maxWidth = (int) Math.floor (panel.getSize().getWidth()); 
    if (labelW <= maxWidth) 
     return; 
    for (int k = 1 ; labelW > maxWidth ; k++) { 
     Font labelFont = font.deriveFont (font.getSize() - k*1.0f); 
     label.setFont (labelFont); 
     labelW = (int) Math.ceil (label.getPreferredSize().getWidth()); 
    } 
} 
+0

Извините, мой браузер прослушивается, и я не видел, что часть моего вопроса отсутствовала после его восстановления. Моя проблема заключается не в изменении размера, а в том, что я должен измерить ширину «html-formated» строки, такой как «échec» (5 символов), которая становится '& eacute;' chec (12 символов), и я бы например, чтобы получить ширину «echec». Спасибо ! – Sharcoux