这可能是一个非常简单的问题,但由于我真的不知道我在寻找什么,我无法找到解决方案......
我正在使用一个JLabel里面放一个html字符串。我的字符串是由Jsoup获得然后,我想调整JLabel的大小以使其适合字符串。为此,我使用的FontMetrics.stringWidth方法工作正常...除非我有特殊字符,例如“è”,“ç”,“ô”等。在这种情况下,字符变为像ô
或é
一样,stringWidth会将其考虑在内。
例如,FontMetrics.stringWidth(HTMLFormating(“é”))会给我一个(“é
”)的stringWidth,它更长......我的预期结果是当我测量长度时例如,“é
chec”,我得到与“echec”相同的结果
解决方案是什么?有没有办法将html字符串转换回“普通”字符串?或者我应该使用其他方法吗?
感谢您的帮助!
答案 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());
}
}