0

这可能是一个非常简单的问题,但由于我真的不知道我在寻找什么,我无法成功找到解决方案......

我正在使用一个 JLabel,我在其中放置了一个 html 字符串。我的字符串是由 Jsoup 获得的 然后,我想调整 JLabel 的大小以使其适合字符串。为此,我使用了 FontMetrics.stringWidth 方法,该方法效果很好......除非我有特殊字符,例如“è”、“ç”、“ô”等。在这种情况下,字符变为sth like ô, or é, 并且 stringWidth 将其考虑在内。

例如, FontMetrics.stringWidth(HTMLFormating("é")) 会给我 (" é") 的 stringWidth 更长...我的预期结果是,例如,当我测量“ échec”的长度时,我得到与“echec”的结果相同

解决办法是什么 ?有没有办法将 html 字符串转换回“普通”字符串?还是我应该使用另一种方法?

谢谢你的帮助 !

4

2 回答 2

1

添加字符串后,只需检查标签的首选大小。

于 2013-12-13T09:02:44.100 回答
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());
    }
}
于 2013-12-10T13:06:27.337 回答