2009-11-19 4 views
0

나는 세 개의 EditField를 가지고 있는데, 나는 두 번째 editfield에 대해서만 focusListener를 설정했다. 포커스를 잃었을 때 필드가 비어 있는지 여부를 확인하고 있습니다. 필드가 비어 있으면 팝업 메시지가 표시됩니다. 이제는 사용자가 해당 필드로 이동하면 필드를 입력하지 않고 다른 필드로 이동할 수 없지만 나는 사용자가 그 필드 위에있는 필드로 이동할 수 있고 그가 아래 필드로 이동할 수 없길 원합니다.이 상황을 어떻게 처리할까요? ur 아이디어를 공유하십시오.이 상황에서 Blackberry에 Focuschangelistener를 처리하는 방법은 무엇입니까?

+0

그래서, 사용자가 이전 필드로 빈 필드에서 이동하지만 다음 필드를 이동 금지 허용 할 사용의

class ValidatedEdit extends BasicEditField implements IValidated { private static final String EMPTY_STRING = ""; public ValidatedEdit(String label, String value) { super(label, value); } protected void onFocus(int direction) { // it's from upper field if (direction > 0 && getIndex() > 0) { // get upper field Field field = getManager().getField(getIndex() - 1); // if its IValidated if (field instanceof IValidated) { IValidated validated = (IValidated) field; // validate, if false set focus to IValidated if (!validated.validate()) { field.setFocus(); return; } } } super.onFocus(direction); } public boolean validate() { return !getText().equalsIgnoreCase(EMPTY_STRING); } } 

예? –

+0

예 정확하게 coldice – Kumar

답변

2

나는 그것이 검증 기능을위한 것이라고 생각하니? 제안 검증 전략을 참조하십시오

interface IValidated { 
public boolean validate(); 
} 

지금 목록 또는 확인란 또는 선택과 같은 모든 필드가, 그것을 구현할 수 있습니다 : 우리는 적절한 데이터를 확인하실 수 있습니다 인터페이스 IValidated 있습니다.
다음에는 각 필드에 onFocus 이벤트가 있습니다.이 이벤트가 발생하면 previouse IValidated 필드와 setFocus를 검증 할 수 있습니다.

참조 EditField 예 :

class Scr extends MainScreen { 
ValidatedEdit mEditField1 = new ValidatedEdit("field#1", ""); 
ValidatedEdit mEditField2 = new ValidatedEdit("field#2", ""); 
ValidatedEdit mEditField3 = new ValidatedEdit("field#3", ""); 

public Scr() { 
    add(mEditField1); 
    add(mEditField2); 
    add(mEditField3); 
} 
} 
관련 문제