0

У меня проблема с EditField. Я создал EditField, используя этот код под «HorizontalFieldManager».BlackBerry - линия не отображается

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

Проблема сейчас: на экране не отображается линия поля. Что-то вроде, в основном поле содержит «Name: ----------------------» такую ​​строку в других элементах управления платформой, которые не отображаются здесь на экране. В чем проблема? Является ли значение по умолчанию для поддержки API? Если нет, как мне его решить?

Примечание: эта строка создается только тогда, когда я что-то пишу в поле.

Спасибо.

ответ

0

Если вы хотите, чтобы это "----" в случае EditField пуст, расширить его реализовать логику проверки значения:

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

Пример использования:

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