0

我遇到了EditField的问题。 我在“Horizo​​ntalFieldManager”下创建了使用此代码的EditField黑莓手机 - 线路未显示

EditField nameEditLabel = new EditField (EditField.FOCUSABLE 
    | EditField.NO_NEWLINE | EditField.FIELD_RIGHT); 
nameEditLabel.setMaxSize(25); 
nameEditLabel.setMargin(50, 0, 0, 80); 
horizontalFldManager.add(nameEditLabel); 

现在的问题是,在屏幕上,它不显示字段的行。类似的,基本上是一个Field在其他平台控件中包含“Name:----------------------”这样的行,这不会在屏幕上显示。这里有什么问题?它是否支持API?如果不是,我该如何解决它?

注:只有当我在字段上写东西时才会创建此行。

谢谢。

回答

0

如果你想拥有这种 “----” 如果EditField中是空的,它扩大到实施校验值逻辑:

class Scr extends MainScreen { 

public Scr() { 
    String label = "Name:"; 
    String empty = "-------------------------"; 
    int maxChars = 25; 
    long style = EditField.FOCUSABLE | EditField.NO_NEWLINE 
    | EditField.FIELD_RIGHT; 
    LabelFieldEmpty nameEdit = new LabelFieldEmpty(style); 
    nameEdit.setLabel(label); 
    nameEdit.setMaxSize(maxChars); 
    nameEdit.setMargin(50, 0, 0, 80); 
    nameEdit.setEmptyText(empty); 
    add(nameEdit); 
} 
} 

class LabelFieldEmpty extends EditField { 
String mEmptyText = ""; 

public LabelFieldEmpty(long style) { 
    super(style); 
} 

public void setEmptyText(String emptyText) { 
    mEmptyText = emptyText; 
} 

public String getEmptyText() { 
    return mEmptyText; 
} 

protected boolean keyChar(char key, int status, int time) { 
    if (null != mEmptyText) 
    if (getText().equalsIgnoreCase(mEmptyText)) { 
    setText(String.valueOf(key)); 
    return true; 
    } 
    return super.keyChar(key, status, time); 
} 

protected void fieldChangeNotify(int context) { 
    if (null != mEmptyText) 
    if (!getText().equalsIgnoreCase(mEmptyText)) 
    if (getText().equalsIgnoreCase("")) { 
    setText(mEmptyText); 
    setCursorPosition(0); 
    } 
    super.fieldChangeNotify(context); 
} 
} 

使用示例