首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取LabelField (BlackBerry)的“实际”宽度

获取LabelField (BlackBerry)的“实际”宽度
EN

Stack Overflow用户
提问于 2012-09-10 13:49:33
回答 2查看 258关注 0票数 0

如果我像这样新建一个LabelField:

代码语言:javascript
运行
复制
LabelField label = new LabelField("long longgggg long text");

它显示:

-----------------------

| long longggg |

| long text |

-----------------------

如果我使用label.getWidth(),它给出的宽度是:

| long longggg |

但我需要的是宽度:

| long longggg

有什么解决方案吗?

EN

回答 2

Stack Overflow用户

发布于 2012-09-10 15:59:36

检查getPreferedWidth()以获取长度。

如果你应用的字体超过了你需要的字体

代码语言:javascript
运行
复制
<font object>.getAdvance(label.getText()) 
票数 0
EN

Stack Overflow用户

发布于 2013-08-08 16:40:33

下面是我用来获得多行标签实际高度的方法:

代码语言:javascript
运行
复制
public int getPreferredHeight() {
        String text = getText();

        int maxWidth = getManager().getPreferredWidth();
        String[] words = StringUtilities.stringToWords(text);
        int lastWordAdvance = 0;
        int lines = 1;
        for (int i = 0; i < words.length; i++) {
            int wordAdvance = getFont().getAdvance(words[i]);
            if (lastWordAdvance + wordAdvance < maxWidth ) {
                lastWordAdvance += wordAdvance;
            } else {
                lines++;
                lastWordAdvance = wordAdvance;
            }
        }
        return (int)lines * getFont().getHeight(); 
    }

它一个接一个地检查单词,并计算预付款,试图找出我们的标签真正使用了多少行。然后我使用getFont().getHeight()来确定总高度。

您可以使用我的示例中计算advance的部分来获得标签的实际宽度。为此,您可以使用Math.max()方法来确定最大线宽。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12345967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档