Tenho um campo CPF onde quero que o usuário somente digite números.
txtCpf.addKeyboardListener(new KeyboardListener() {
public void onKeyDown(Widget sender, char keyCode, int modifiers) {
// TODO Auto-generated method stub
}
public void onKeyPress(Widget sender, char keyCode, int modifiers) {
// TODO Auto-generated method stub
}
public void onKeyUp(Widget sender, char keyCode, int modifiers) {
TextBox txt = (TextBox)sender;
try {
Integer.parseInt(String.valueOf(keyCode));
} catch (NumberFormatException e) {
char ch = Character.toChars(KEY_BACKSPACE)[0];
txt.setText(txt.getText().replace(keyCode, ch));
}
}
});
Assim que o usuário digitar uma letra ela será apagada, de acordo com esse código. O problema é que o keyCode sempre vem maiúsculo, e por isso letras minúsculas não são apagadas. Outro problema é que ele substitui a letra por um quadrado, ao invés de simplesmente apagar. O char do KEY_BACKSPACE é \b.
Alguém sabe resolver isso, ou tem alguma outra opção para eu usar?