Somente números no GWT

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?

Veja o exemplo na própria documentação.

http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/TextBox.html

Basicamente você tem de aceitar nesse campo os dígitos, as teclas de edição (BACKSPACE, ENTER etc.) e se não for nenhuma delas, você precisa só chamar o método cancelKey().

Deu certo, valeu.