Java 将stringWidth与html字符串一起使用

Java 将stringWidth与html字符串一起使用,java,html,fontmetrics,Java,Html,Fontmetrics,这可能是一个非常简单的问题,但由于我不知道我在寻找什么,我无法成功地找到解决方案 我使用的是一个JLabel,里面放了一个html字符串。我的字符串是由Jsoup获得的,然后,我想调整JLabel的大小,使其适合字符串。为此,我使用FontMetrics.stringWidth方法,该方法运行良好。。。除非我有特殊字符,如“è”、“ç”、“ô”等。在这种情况下,字符变成类似于ô,或é,并且stringWidth将其考虑在内 例如,FontMetrics.stringWidt

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

我使用的是一个JLabel,里面放了一个html字符串。我的字符串是由Jsoup获得的,然后,我想调整JLabel的大小,使其适合字符串。为此,我使用FontMetrics.stringWidth方法,该方法运行良好。。。除非我有特殊字符,如“è”、“ç”、“ô”等。在这种情况下,字符变成类似于
ô,或
é,并且stringWidth将其考虑在内

例如,FontMetrics.stringWidth(HTMLFormating(“é”)将为我提供的stringWidth(“
é;
”)要长得多。。。我的预期结果是,例如,当我测量“
é;
chec”的长度时,我得到的结果与“echec”的结果相同

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


谢谢你的帮助

您可能应该发布用于调整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());
    }
}
public void resize(字符串newText){
label.setText(newText);
label.setFont(字体);
int labelW=(int)Math.ceil(label.getPreferredSize().getWidth());
int maxWidth=(int)Math.floor(panel.getSize().getWidth());
if(labelW maxWidth;k++){
Font-labelFont=Font.deriveFont(Font.getSize()-k*1.0f);
label.setFont(labelFont);
labelW=(int)Math.ceil(label.getPreferredSize().getWidth());
}
}
添加字符串后,只需检查


对不起,我的浏览器出现了错误,恢复后我没有发现问题的一部分丢失了。我的问题不是调整大小,而是我必须测量“html格式”字符串的宽度,例如“échec”(5个字符),它变成了
é
chec(12个字符),我想得到“echec”的宽度。非常感谢。只要添加了
字符串
。@AndrewThompson,你说得对!它非常有效。谢谢