Exceção e Focus em um JTextField

6 respostas
higornucci

Olá, amigos! :smiley:

Estou com o seguinte problema. Tenho um JTextField no qual o usuário digita um valor e tenho que converte-lo para Double para poder gravar no banco. Minhas dúvidas são, qual tipo de Exception eu devo usar e, quando essa exceção for lançada, como voltar o foco para o JTextField.

Um exemplo de código do que estou tentando fazer:

try {
     Double valor = Double.parseDouble(jtfValor.getText());
} catch (Exception e) { // Qual o tipo de exceção?
     JOptionPane.showMessageDialog(this, "O valor do pagamento esta escrito de forma incorreta." +
                    "\n- Use pontos no lugar de vígulas." +
                    "\n- Não deixe em branco." +
                    "\n- Não use letras.");
     // Agora o foco deve voltar para o JTextField
}

Desde de já, agradeço a todos que colaborarem.

6 Respostas

S

Uma dica, você pode usar o jTextField.getText().replace(’,’,’.’) para não precisar obrigar o usuário a digitar o número flutuante com ponto(.)

Fazer uma variável auxiliar que receba o conteúdo do textfield e aplicar este replace e o replace de ’ ’ por ‘’ (retirar os espaços), e fazer depois um setText() contendo o novo texto no evento do botao

J

Tente usar a NumberFormatException, ela irá lançar uma exceção se a string digitada não estiver de acordo com o tipo a ser convertido

higornucci

Maravilha. :smiley:

Essa do .replace(char, char) eu não sabia. Muito obrigado pela dica.

Agora estou usando a exceção correta. NumberFormatException. Muito obrigado tambem

Contudo, ainda falta saber como voltar o foco a um determinado JTextField.

S

higornucci:
Maravilha. :smiley:

Essa do .replace(char, char) eu não sabia. Muito obrigado pela dica.

Agora estou usando a exceção correta. NumberFormatException. Muito obrigado tambem

Contudo, ainda falta saber como voltar o foco a um determinado JTextField.


No replace não precisa ser necessariamente (char, char).
Não sei se estou dizendo besteira pois também sou iniciante em java, mas acredito que é o método requestFocus();

jTextField1.requestFocus();
higornucci

Oooooo rapaz!

Era isso mesmo, eu estava procurando algo como jtfValor.setFocus(true) hahahaha

Brigadão a todos que contribuiram :smiley:

resolvido!

ViniGodoy

O comando não é requestFocus(). É o requestFocusInWindow(). Pode ler, está escrito na própria documentação do requestFocus().

O requestFocus() não é multi-plataforma, e pode trazer o foco da janela de maneira inconveniente para o usuário.

Criado 6 de abril de 2010
Ultima resposta 6 de abr. de 2010
Respostas 6
Participantes 4