Você pode validar na hora que o formulario for submetido, cadastrado, ou enfim.
O evento não precisa ser do textfield, pode ser de um click de botao que esteja dentro do formulario.
A
Agr0
chimufox:
Você pode validar na hora que o formulario for submetido, cadastrado, ou enfim.
O evento não precisa ser do textfield, pode ser de um click de botao que esteja dentro do formulario.
Entendi… Mas eu to querendo fazer isso no jTextField… No meu caso, vai ficar melhor…
Vc sabe como ?
V
vatos
Kra, se for pra validar ao sair do campo da pra usar o focusLost, ele irá disparar toda vez que perder o foco no campo.
Pode ser o keyPressed também, mas ai tem que ter cuidado pra não mostrar o erro toda hora.
Você só usa um evento se houver um botão de “salvar”. Nesse caso, o actionPerformed do salvar faz a validação, fora do JTextField. Agora, jamais use KeyPressed ou LostFocus para validar um JTextField.
No caso do KeyPressed, ele não só não é multiplataforma como ele só captura teclas. Se o usuário colar um valor inválido com o mouse, o código quebra. No caso do focusLost, o problema é que, além de não ser multiplataforma, componentes podem receber e perder foco a qualquer momento, inclusive em alguns que você não espera.
A
Agr0
Anime:
Oi,
Use o evento ActionPerformed…
Vai ter q ser no ActionPeformed mesmo…
So vou me bater um pouco p juntar ele com o restante do codigo…
try{/* Instanciando a classe do driver através do seu nome */Class.forName(DRV);System.out.println("Driver JDBC carregado");}catch(ClassNotFoundExceptioncnfe){System.out.println("Driver JDBC não encontrado : "+cnfe.getMessage());}//}try{/* Obtendo a conexão com o banco de dados */con=DriverManager.getConnection(URL2,USUARIO,SENHA);System.out.println("Conexão com o banco de dados estabelecida.");}catch(SQLExceptionsqle){System.out.println("Erro na conexão ao Bando de Dados : "+sqle.getMessage());}/* Criando conexão com o banco de dados *///Insere um novo registro no BDtry{// String sql = null;/* Carregando o driver JDBC para um determinado SGBD */System.out.println("Inserindo dados....");//INSERT na tabela MovimentacaoPreparedStatementinsere=con.prepareStatement("insert into movimentacao "+"(codigo_funcionario,"+"codigo_produto,setor_destino,data_movimentacao,observacao) VALUES (?,?,?,?,?) ");StringcodigoFuncionario=("16");StringcodigoProduto=jTextField1.getText();StringsetorDestino=jTextField2.getText();StringdataMovimentacao=jTextField5.getText();Stringobservacao=jTextArea1.getText();Stringestado=jComboBox1.getSelectedItem().toString();insere.setString(1,codigoFuncionario);insere.setString(2,codigoProduto);insere.setString(3,setorDestino);insere.setString(4,dataMovimentacao);insere.setString(5,observacao);//insere.setString(6, estado);insere.executeUpdate();//UPDATE na tabela ProdutosStringsql=" UPDATE produtos set estado='"+jComboBox1.getSelectedItem()+"' "+"where codigo_produto='"+jTextField1.getText()+"'";PreparedStatementps=con.prepareStatement(sql);ps.executeUpdate();System.out.println("Atualizando dados");}catch(SQLExceptionsqle){System.out.println("Erro na conexão ao Bando de Dados : "+sqle.getMessage());}/* fechando a conexão com o SGBD */try{con.close();JOptionPane.showMessageDialog(null," Movimentação concluída. ");jTextField1.setText("");//Limpando os JTextFieldsjTextField2.setText("");jTextField3.setText("");jTextField4.setText("");jTextField7.setText("");jTextField5.setText("");jTextField6.setText("");jTextArea1.setText("");}catch(SQLExceptionsqle){System.out.println("Erro no fechamento da conexão : ");}
V
ViniGodoy
Aproveitando. Tópico movido para o fórum de interface gráfica. Por favor, leia com atenção a descrição dos fóruns antes de postar.
Você só usa um evento se houver um botão de “salvar”. Nesse caso, o actionPerformed do salvar faz a validação, fora do JTextField. Agora, jamais use KeyPressed ou LostFocus para validar um JTextField.
No caso do KeyPressed, ele não só não é multiplataforma como ele só captura teclas. Se o usuário colar um valor inválido com o mouse, o código quebra. No caso do focusLost, o problema é que, além de não ser multiplataforma, componentes podem receber e perder foco a qualquer momento, inclusive em alguns que você não espera.
Que legal, então o KeyPressed e LostFocus existem pra bonito… Já que não se pode usar…
C
chimufox
o evento pode ser ao conteudo do text field mudar, nao me recordo exatamente da representacao de classe desse veento…
V
ViniGodoy
Ironicamente, é isso mesmo.
E adivinha como eu descobri o InputVerifier? Com eventos sendo disparados mais vezes do que eu queria.
Aliás, uma rápida pesquisa no google acha gente com o mesmo problema: http://www.thatsjava.com/java-core-gui-apis/50044/
V
vatos
Ironicamente, é isso mesmo.
E adivinha como eu descobri o InputVerifier? Com eventos sendo disparados mais vezes do que eu queria.
Aliás, uma rápida pesquisa no google acha gente com o mesmo problema: http://www.thatsjava.com/java-core-gui-apis/50044/
Estou começando a usar o java web profissionalmente, esse tipo de coisa é bom pra deixar o cara atento…
V
ViniGodoy
Nesse caso, é Java para desktop mesmo. Mas é sempre bom ler e reler a documentação. Tem muitas dicas como essa por lá.
A
AssemblyXP
Bom galera,
so acontece essas catástrofes mencionadas acima, nos componentes textfields de mudança de focus ou chamadas várias vezes, ou até em relação ao keyPressed, se o programador não tiver o controle total da aplicação, por que se tiver, dificilmente terá problemas. Trabalho com uma aplicação que faz validações em CPF, DATAS, LOGINS EXISTENTES, USUÁRIOS EXISTENTES, usando o lostFocus, keyPressed, TAB e tudo mais. Confesso, nunca tive problemas, cadastro normalmente, se der erro no campo, o mesmo é sinalizado com uma cor informando ao usuário que esta com erro, o mesmo vai lá e concerta e cadastra normalmente.
#FICA A DICA!!
V
ViniGodoy
Acontece que o programador nunca tem total controle da aplicação. Ou você está implementando todo mecanismo de foco do Swing, em todas as plataformas que o Java é suportado?
Quem pede para usar o Document e o InputVerifier não sou eu, é a documentação. É a própria Oracle que não recomenda o uso de foco para validação de dados.
Se sua aplicação está funcionando, você pode estar com uma bomba relógio nas mãos.
Bons programadores fazem sistemas confiáveis, não simplesmente “fazem funcionar”.
A
AssemblyXP
é uma caso a se verificar… irei rever melhor a documentação. Porém, além desse problema, estou com um pior. Estou desenvolvendo 4 sistemas pra um cartório, com tela de login, tela de escolha de sistema, e a tela do sistema escolhido, e o erro é que quando efetua o logon, se autorizado, ‘setVisible(false)’ na tela de login, instancio a tela de escolha do sistema, depois de escolhido o referido sistema, mais um setVisible(false) na tela de escolha de sistema, e instancio a tela do sistema, mais na hora de voltar do sistema principal para a tela de escolha de sistema ou para a tela de login, NÃO estou sabendo manipular os objetos criados, e então, cria denovo, da tilts, abre multiplas janelas. Se puderem me ajudar. Estou pensando em fazer com DIALOG modais. Pode ser uma solução.
A
AssemblyXP
é uma caso a se verificar… irei rever melhor a documentação. Porém, além desse problema, estou com um pior. Estou desenvolvendo 4 sistemas pra um cartório, com tela de login, tela de escolha de sistema, e a tela do sistema escolhido, e o erro é que quando efetua o logon ‘setVisible(false)’ na tela de login, instancio a tela de escolha do sistema, depois de escolhido o referido sistema, mais um setVisible(false) na tela de escolha de sistema, e instancio a tela do sistema, mais na hora de voltar do sistema principal para a tela de escolha de sistema ou para a tela de login, NÃO estou sabendo manipular os objetos criados, e então, cria denovo, da tilts, abre novas janelas. Se puderem me ajudar. Estou pensando em fazer com DIALOG modais. Pode ser uma solução.