0

EditField에 문제가 있습니다. "HorizontalFieldManager"에서이 코드를 사용하여 EditField을 만들었습니다.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 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); 
} 
} 

관련 문제