0

If I new a LabelField like this:

LabelField label = new LabelField("long longgggg long text");

it shows:

-----------------------
| long longggg     |
| long text            |
-----------------------

if I use label.getWidth(), it gives the width of:

| long longggg     |

but what I need is the width of:

| long longggg

Any solution?

4

2 回答 2

0

这是我用来获取多行标签实际高度的方法:

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() 来确定总高度。

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

于 2013-08-08T08:40:32.937 回答
0

检查 getPreferedWidth() 以获取长度。

如果您应用了任何字体而不是您需要的字体

<font object>.getAdvance(label.getText()) 
于 2012-09-10T07:59:36.180 回答