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); 
} 
} 

使用示例