2011-09-28 5 views
1

TextField에서 숫자 및 암호 제약 조건을 지정하는 여러 가지 방법을 테스트했습니다. 하지만 작동하지 않는, 아래 코드를 참조하십시오.LWUIT의 가상 키보드에서 숫자 제약 조건이 작동하지 않는 이유는 무엇입니까?

textField.setConstraint(TextField.NUMERIC | TextField.PASSWORD); 
textField.setInputModeOrder(new String[]{"123"}); 

위 코드는 비 접촉 식 휴대 전화에서 작동해야합니다. 하지만 터치 모바일에서는 작동하지 않습니다. 그래서 VKB에 대한 입력 모드 값을 설정하고 TextFieldVKB으로 바인딩하십시오.이 코드를 참조하십시오.

TextField txt = new TextField(); 
txt.setConstraint(TextField.NUMERIC |TextField.PASSWORD); 
txt.setInputModeOrder(new String[]{"123"}); 
VirtualKeyboard vkb = new VirtualKeyboard(); 
vkb.setInputModeOrder(new String[]{VirtualKeyboard.NUMBERS_MODE}); 
VirtualKeyboard.bindVirtualKeyboard(txt, vkb); 

VirtualKeyboard.NUMBERS_MODE 위의 코드를 사용하면 작동하지 않습니다. VKB은 일반적인 형식으로 표시됩니다. 이는 AlphaNumeric 형식을 의미합니다. 왜 그걸 보여주는거야?

답변

3

이것은 LWUIT의 버그입니다. 앞으로 2 주 내에 해결할 수 있도록 노력하겠습니다. JavaOne로 곧 갈 필요가 있습니다.

로컬 수정을 시도 할 경우 바로 VirtualKeyboard.java에서이 방법 업데이트 :

public void setInputType(int inputType) { 
    if((inputType & TextArea.NUMERIC) == TextArea.NUMERIC || 
      (inputType & TextArea.PHONENUMBER) == TextArea.PHONENUMBER) { 
     setInputModeOrder(new String []{NUMBERS_MODE}); 
     return; 
    } 
    if((inputType & TextArea.DECIMAL) == TextArea.NUMERIC) { 
     setInputModeOrder(new String []{NUMBERS_SYMBOLS_MODE}); 
     return; 
    } 
    setInputModeOrder(defaultInputModeOrder); 
} 
관련 문제