【问题标题】:Using stringWidth with html String将 stringWidth 与 html 字符串一起使用
【发布时间】:2013-12-10 12:53:21
【问题描述】:

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

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

例如,FontMetrics.stringWidth(HTMLFormating("é")) 会给我 ("é") 的 stringWidth,它要长得多...我的预期结果是,当我测量 "@例如 987654325@chec",我得到的结果与 "echec" 相同

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

感谢您的帮助!

【问题讨论】:

标签: java html fontmetrics


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可能应该发布用于调整 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());
        }
    }
    

    【讨论】:

    • 抱歉,我的浏览器出错了,我没有看到我的部分问题在恢复后丢失了。我的问题不在于调整大小,而在于我必须测量“échec”(5 个字符)等“html 格式”字符串的宽度,它变成&amp;eacute;chec(12 个字符),我想改为获得“echec”的宽度。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2020-01-17
    • 2014-06-21
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多