Validar formulario em uma aplicação Swing

Deu certo pra ver o erro, mas agora ele passa pelo JTextField… e coloquei ele em um evento keypressed e fica dando o erro qnd tiro o foco com o TAB ou ate msm qnd clik em algum outro local da tela ai fica sem ação so com o erro mostrando…

[code]public void validaCamposPreenchidos() {
nomeField.setInputVerifier(new InputVerifier() {
public boolean verify(JComponent input) {
JTextField txtNome = (JTextField) input;
if (txtNome.getText().equals("")) {
JOptionPane.showMessageDialog(null, “Informe o campo NOME!”, “Erro de validação!”, JOptionPane.ERROR_MESSAGE);
//nomeField.requestFocus();
setBackground(Color.yellow);
return false;
}
return true;
}
});

}[/code]

“vini”

então como eu poderia validar todos meu campos txt , qq existir algum campo vazio aparecer ele em vermelho

o manu deu esse exemplo mas não deu muito certo!
como poderia fazer isso para todos em vez de digitar todos os txt …

private void jTextField1FocusLost(java.awt.event.FocusEvent evt) { /* verifica se o campos esta vazio */ if (jTextField1.getText().equals("")){ /* seta o background para vermelho */ jTextField1.setBackground(Color.RED); } else { /* seta o background para branco */ jTextField1.setBackground(Color.WHITE); } }

cara como o vini falo com focus sempre gera alguns problema ele sugeriu usar InputVerifier, Logo acima tem um exemplo do codigo q to tentando fazer aki… com cor e mensagem… mas aki qnd da o 1 erro ele fica dando erros em sequencia ao tirar o focu ate mesmo indo cancelar o evento!

Cria o listener como uma classe separada, aí é só associar o mesmo listener para vários componentes.

mas vini dessa forma ele pode evitar de tipo qnd tem o erro ele mostra o foco para o campo mas qnd vou cancelar ele sai o foco e mostra o erro novamente…

viniGodoy da forma vc mostrou ele funcionaria msm qnd teclo TAB ele alertar e focar o erro no campo…

pq coloquei ele em um keypressd e n ta rodando qnd clico TAB

[quote=habinovich]viniGodoy da forma vc mostrou ele funcionaria msm qnd teclo TAB ele alertar e focar o erro no campo…

pq coloquei ele em um keypressd e n ta rodando qnd clico TAB[/quote]

Clique no próximo campo com o mouse.

mas tipo eu tenho q por o metodo em algum evento especifico?

lokit"s pq meu método nao da mto certo?
o que eu propus ele cumpri… e digamos que com simplicidade…

habinovich, a melhor solução seria mudar o foco, prender o usuário no campo fere todas regras de heurísticas pra uma avaliação de interface qualquer…
entao, tenta resolver ao longo da execução e nao proibindo ações, e tirando dinamismo… =/

Abraço.

FabioQuintana

valeu brother mas ja resolvi usei um pouco do seu codigo sim…

flou abrxx

[quote=habinovich]mas tipo eu tenho q por o metodo em algum evento especifico?

[/quote]

Vini como eu posso simular o Click do mouse para um JtextField, pq a validação q vc me passo so funciona se clicar com o mouse no campo gostaria de evitar isso e fazer com q ao chamar o formulario ja simule o click do mouse no 1campo para apartir da montar a validação com TAB…

pra evitar o usuaria click em outras partes e alert a validação no campo q o usuario clicou e n no 1 campo… pq o formulario vai validar mas de um campo!

Não se eh possivel isso, mas eh uma duvida!!

att,

O que exatamente você quer fazer?

A validação com o InputVerifier funciona sempre que vc tenta sair do campo, seja com o mouse ou não.

tipo aki tenho o 1 campo (nome)recebi requestFocus vindo do botao que chama o fomulario no caso esse campo não valida so faz a validação se eu clicar com o mouse nele, tiro o foco dele com o TAB sem usar o mouse no campo ele não faz o teste…
alguma ideia pra mi ajudar!!!

Você está definindo o inputVerifier quando? No construtor do seu JFrame?

Não, não foi no contrutor q definei ele!

Criei o metodo e coloquei ele para usar no botao salvar para tbm fazer a validação apartir de la!

[quote=habinovich]Não, não foi no contrutor q definei ele!

Criei o metodo e coloquei ele para usar no botao salvar para tbm fazer a validação apartir de la![/quote]

Coloque no construtor do seu JFrame. O setInputVerifier só configura o verificador do JTextField, não faz a verificação em si.
Se vc deixar em um método, esse método terá que ser chamado pelo menos uma vez para que a verificação comece a ser feita.

era por esse o motivo q tava falando do clik do mouse q chamava para o 1 campo

nesse caso agora para validar tbm no salvar tenho q criar outra forma para validar?

Booa noite!!

Galera, estou começando com Java agora e estava na net procurando um tipo de validação simples, somente se ainda não preencheu o campo informar numa JOptionPane e retornar sem realizar nenhuma tarefa e consegui este código aqui, muito simples… Não sei se é uma má pratica ou algo do tipo, como falei no inicio sou novo, se for ruim, favor informar abaixo ae, porque gostaria de aprender da melhor forma.

Este código inseri dentro da ação do botão.

OBS. tfProjeto é o nome da minha JTextField.

if (tfProjeto.getText().equals("")) {
						JOptionPane.showMessageDialog(c, "Preencha o campo Projeto.", "Erro de validação",
								JOptionPane.ERROR_MESSAGE);
						return;
					}

Abraço!

Boa tarde, consegui implementar o InputVerifier mas quando quero sair da janela com um botão tipo cancelar a operação, ele nao me deixa sem informar o campo, como posso fazer?

Boa tarde a todos, descupe se cometer algum erro ( MINHA PRIMEIRA POSTAGEM)
Acabei de fazer as validaçoes da minha tela. vou tentar passar o codigo .

//Criei um metodo para fazer a gravaçao (gravarAlterar)
// no evento do botão gravar eu declarei uma variavel int com valor zero

e fiz uma condição para validar os campos se alguns deles estiverem fora da condição que preciso altero o valor da variavel para 1 e assim com outra comparação eu consigo controlar se vai gravar ou não.

Desculpe a inexperiencia com blog. Espero ter ajudado…

private void btnGravarActionPerformed(java.awt.event.ActionEvent evt) {
int result = 0;
if(txtNome.getText().equals("")){
result = 1;
}

    if(result==0 ){
        gravarAlterar(); 
    }else{
        JOptionPane.showMessageDialog(null, "Existem Dados Obrigatórios a serem preenchidos");
        txtNome.requestFocus();
    }

}