将stringWidth与html String一起使用

时间:2013-12-10 12:53:22

标签: java html fontmetrics

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

我正在使用一个JLabel里面放一个html字符串。我的字符串是由Jsoup获得然后,我想调整JLabel的大小以使其适合字符串。为此,我使用的FontMetrics.stringWidth方法工作正常...除非我有特殊字符,例如“è”,“ç”,“ô”等。在这种情况下,字符变为像ôé一样,stringWidth会将其考虑在内。

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

解决方案是什么?有没有办法将html字符串转换回“普通”字符串?或者我应该使用其他方法吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

添加字符串后,只需检查preferred size of the label即可。

答案 1 :(得分: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());
    }
}