[RESOLVIDO] Validação de campos

como personalizar os campos de validação ?

por exemplo eu tenho um form com campo nome,email,cpf e quero que quando alquem comecar a digitar nele ele fique com focu verde no jtextfield,como fazer ??

eu fiz com uns icones ,mas fico muito pesado e as vezes travava pq eu tinha colcado um while infinito é duas thread no codigo.

o metodo que eu criei era esse

public void metodoValidacao() {

    new Thread() {
        public void run() {
            while (true) {

                new Thread()  {
                    public void run() {
                        if (txtNome.getText().length() > 0) {
                            lbl_status_nome.setVisible(true);
                            lbl_status_nome_erro.setVisible(false);
                        } else {
                            lbl_status_nome.setVisible(false);
                            lbl_status_nome_erro.setVisible(true);
                        }

                        if (txtEmail.getText().length() > 0) {
                            lbl_status_email.setVisible(true);
                            lbl_status_email_erro.setVisible(false);
                        } else {
                            lbl_status_email.setVisible(false);
                            lbl_status_email_erro.setVisible(true);
                        }

                        if (txtCPF.getText().length() > 0) {
                            lbl_status_cpf.setVisible(true);
                            lbl_status_cpf_erro.setVisible(false);
                        } else {
                            lbl_status_cpf.setVisible(false);
                            lbl_status_cpf_erro.setVisible(true);
                        }

                    }

                }.start();
            }

        }
    }.start();
}

Botão direito no campo, eventos, Focus, Focus Gain (algo assim).

Aí vc coloca lá: jTextField.setBorder(new LineBorder(Color.GREEN));

(escolhe a cor que vc quiser)

Não use Threads:

// construtor
JTextField txtNome = new JTextField();

// inicialização
boolean txtNomeAtualizado = false;
txtNome.setText("");

txtNome.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
    txtNomeAtualizado = true;
    validar();
  }
  public void removeUpdate(DocumentEvent e) {
    txtNomeAtualizado = true;
    validar();
  }
  public void insertUpdate(DocumentEvent e) {
    txtNomeAtualizado = true;
    validar();
  }
});

void validar() {
  if txtNomeAtualizado) {
    boolean result = txtNome.getText().length() > 0;
    lbl_status_nome.setVisible(result);
    lbl_status_nome_erro.setVisible(!result);
  } else {
    /* visual padrão, como se a janela tivesse acabado de abrir e o usuário não começou a preencher o campo */
  }
  if (txtEmailAtualizado) {
    boolean result = txtEmail.getText().length() > 0;
    lbl_status_email.setVisible(result);
    lbl_status_email_erro.setVisible(!result);
  } else {
  }
}

eu fiz assim tb,mas quando eu tiro o texto ele continua verde o que não faz sentido fazer desse jeito

Ok, depois disso, vai lá em eventos de novo, Focus, LostFocus:

jTextField.setBorder(new LineBorder(Color.LIGHT_GRAY));

Conseguiu?

consequi,mas ta bem sem graça srsr,mas obg pela ajuda e tempo

Coloca um separador, aí faz assim, quando clicar em um textField, vc será o separator como true.

jSeparator.setVisible(true);

Aí no LostFocus vc coloca setVisible(false);