Restringindo a entrada JTextField a números inteiros [duplicados]
Esta questão já tem uma resposta aqui:
Existe alguma maneira de aceitar apenas valores numéricos em um JTextField? 19 respostasEu sei que essa pergunta deve ter sido feita e respondida um milhão de vezes, mas não consigo encontrar uma solução fácil. Eu tenho um JTextField que se destina a aceitar apenas inteiros positivos como entrada. Eu preciso de uma maneira de garantir que nada mais seja inserido aqui.
Eu já tenho um keyListener anexado a este controle. Removendo o outro código que este ouvinte está lá para lidar, eu tenho isso:
txtAnswer.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
/* Restrict input to only integers */
if (key < 96 && key > 105) e.setKeyChar('');
};
});
Como você pode ver, estou tentando usar o KeyCode para verificar se a tecla que acabou de ser pressionada está dentro do intervalo de inteiros. Isso parece funcionar. Mas o que eu quero fazer é simplesmente desconsiderar a entrada se ela ficar fora desse intervalo. O códigoe.setKeyChar('')
foi feito para lidar com isso, mas não funciona. O código irá compilar, mas não tem efeito visível.
Alguém pode me dizer se estou no caminho certo? O que posso substituir?e.setKeyChar('')
com para fazer isso funcionar? Ou eu estou indo totalmente na direção errada?
Obrigado.