0

J'ai un problème avec EditField. J'ai créé un EditField en utilisant ce code sous un "HorizontalFieldManager".BlackBerry - ligne non affichée

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

problème est maintenant, sur l'écran, il ne montre pas la ligne du champ. Quelque chose comme, fondamentalement un champ contient "Nom: ----------------------" une telle ligne dans d'autres contrôles de la plate-forme, ce qui ne montre pas ici sur l'écran. Quel est le problème ici? Est-ce par défaut dans le support de l'API? Si non, comment puis-je le résoudre?

Note: Cette ligne n'est créée que lorsque j'écris quelque chose sur le terrain.

Merci.

Répondre

0

Si vous voulez avoir ce "----" en cas EditField est vide, l'étendre à mettre en œuvre une logique de valeur de contrôle:

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

Exemple d'utilisation:

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