Loop ao tentar impedir um JTextField de ficar em branco!
6 respostas
MarcioProgramador
Estou criando um programa para cadastrar pessoas em eventos no lugar onde eu trabalho! Estou desenvolvendo uma classe que vai conter uns codigos que posso querer reaproveitar posteriormente. Estou escrevendo um codigo para impedir que um campo que foi declarado como not null no banco seja deixado em branco na interface. Estou usando este código… porém esta dando loop… alguem pode me ajudar a entender pq? eu nao gostaria q o texfield ficasse em brancoo… a seguir o codigo.:
public void verificarCampoVazio(JTextField txtVerificar)
{
if(txtVerificar.getText().isEmpty())
{
JOptionPane.showMessageDialog(null,"Campo "+txtVerificar.getName()+" não pode ficar vazio!","Atenção!",JOptionPane.INFORMATION_MESSAGE);
txtVerificar.requestFocus();
}
esse metodo eu chamei dentro do evento focusLost… onde estou fazendo errado??? obrigadoo!!!
Cara, não consigo te afirmar com toda certeza a fonte do erro, pois estou sem java aqui pra testar
Mas sugiro que tu valide esse tipo de coisa no momento em que for salvar, informando ao usuário todos os campos que ele deixou de preencher.(Já pensou ele ter q fechar cerca de 30 pop-ups em um cadastro maior?)
manolimars
e aí blz, teria como colocar a parte do código que chama este método?
[]'s
MarcioProgramador
Eu estou colocando o código dentro de um evento focusLost como eu disse anteriormente vou colocar o código completo!
public void verificarCampoVazio(JTextField txtVerificar)
{
if(txtVerificar.getText().isEmpty())
{
JOptionPane.showMessageDialog(null,"Campo "+txtVerificar.getName()+" não pode ficar vazio!","Atenção!",JOptionPane.INFORMATION_MESSAGE);
txtVerificar.requestFocus();
}
ai eu coloco ele dentro do frame, através desse código :
private void txtParticipanteFocusLost(java.awt.event.FocusEvent evt)
{
new Metodo().verificarCampoVazio(txtParticipante);
}
Na verdade eu não gostaria que ele exibisse só no final os campos não preenchidos! Acho que seria mais interessante informar logo ao usuário que ele deixou um campo vazio, já que o cadastro não é tão grande assim! Valeu!
MarcioProgramador
Alguma sugestão???
E
entanglement
public void verificarCampoVazio(JTextField txtVerificar)
{
if(txtVerificar.getText().isEmpty())
{
JOptionPane.showMessageDialog(null,"Campo "+txtVerificar.getName()+" não pode ficar vazio!","Atenção!",JOptionPane.INFORMATION_MESSAGE);
txtVerificar.requestFocus();
}
Amigo, se você puser esse código no focusLost, você vai ter problemas, porque após mostrar o JOptionPane, e você invocar requestFocus, você vai acabar invocando o evento focusLost. Por isso, vai ficar em loop mesmo.
Você pode fazer o seguinte:
Você pode pegar a borda de todos os JTextFields que estão incorretos, mudar a cor dessa borda ( e talvez o fundo ) para vermelho, e mostrar um JOptionPane no final de tudo, quando for salvar. Quando o usuário preencher direitinho, volte a cor da borda (e do fundo) para a cor normal.
MarcioProgramador
Olá a todos novamente.... não consegui parar o loop... mas ao invés disso mudei a programação do metodo pra percorrer todo o frame em busca de um textfield em branco. Caso encontre, ele pinta o txtfield de vermelho caso nao ele fica branco! abaixo o código :