获得;“真正的”;LabelField(BlackBerry)的宽度
如果我有一个像这样的新实验室:获得;“真正的”;LabelField(BlackBerry)的宽度,blackberry,labelfield,Blackberry,Labelfield,如果我有一个像这样的新实验室: LabelField label = new LabelField("long longgggg long text"); 它表明: ----------------------- |long Longgg | |长文本| ----------------------- 如果我使用label.getWidth(),它将提供以下宽度: |long Longgg | 但我需要的是: |隆隆 有解决方案吗?检查getPreferedWidth()以获取长度 如果您应用
LabelField label = new LabelField("long longgggg long text");
它表明:
-----------------------|long Longgg |
|长文本|
-----------------------
如果我使用label.getWidth(),它将提供以下宽度: |long Longgg |
但我需要的是: |隆隆 有解决方案吗?检查getPreferedWidth()以获取长度 如果您应用了超出需要的任何字体
<font object>.getAdvance(label.getText())
.getAdvance(label.getText())
以下是我用来获取多行标签实际高度的方法:
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();
}
public int getPreferredHeight(){
String text=getText();
int maxWidth=getManager().getPreferredWidth();
String[]words=StringUtilities.StringToWord(文本);
int lastWordAdvance=0;
int行=1;
for(int i=0;i
它一个接一个地浏览单词并计算前进,试图找出我们的标签实际使用了多少行。
然后我使用getFont().getHeight()来确定总高度
您可以使用我的示例中计算advance的部分来获得标签的实际宽度。
为此,您可以使用Math.max()方法确定最大线宽。它返回
|long longgg |
的宽度,因为我认为它使用了所有可用的宽度。您可以通过在该LabelField上应用彩色背景来检查它。但是如果你不想让LabelField占据所有的空间,那么上级经理需要控制它允许该字段的空间。因为我需要在LabelField后面画一个背景矩形,我不需要不必要的。这很难理解。相反,尝试将标签添加到固定宽度的管理器中,然后调用` manager.setBackground'。然后它将返回“long longgg long text”的长度,而不是LabelField
使用的实际宽度。