如果我像这样新建一个LabelField:
LabelField label = new LabelField("long longgggg long text");它显示:
-----------------------
| long longggg |
| long text |
-----------------------
如果我使用label.getWidth(),它给出的宽度是:
| long longggg |
但我需要的是宽度:
| long longggg
有什么解决方案吗?
发布于 2012-09-10 15:59:36
检查getPreferedWidth()以获取长度。
如果你应用的字体超过了你需要的字体
<font object>.getAdvance(label.getText()) 发布于 2013-08-08 16:40:33
下面是我用来获得多行标签实际高度的方法:
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()方法来确定最大线宽。
https://stackoverflow.com/questions/12345967
复制相似问题