Vamos começar falando neste post sobre as validações de campos JTextField para as interfaces gráficas usando swing.

Já tratamos aqui nos posts sobre alguns tipos de validação, vamos rever:

Essas foram validações sobre os tipos de informações que os jTextFields estão aceitando no componente. Sobre os tipos de informações cada jTextField deve aceitar.

Agora vamos descobrir como validar as informações informadas em um campo de texto ao tentar executar uma ação, Ao clicar em um botão salvar, por exemplo, como testar se podemos realmente efetuar a operação:

O primeiro passo, será montar uma interface a ser validada: no caso a validação será antes de mandar salvar no banco de dados, vamos SUBSTITUIR o comando para salvar no banco de dados pelo código para exibir uma mensagem, a fim de evitar que o código fique muito extenso e difícil de ser compreendido rapidamente.

Interface onde será feita a validação

Figura 1: Interface onde será feita a validação

Para criarmos esse cadastro precisamos inserir 1 JPanel(com borda de título e borda de linha), 7 rótulos, 3 JTextFields e um botão.

Vamos aos nomes dos componentes:

  • jTextFieldNome: Campo de texto do nome;
  • jTextFieldCpf: Campo de texto do CPF;
  • jTextFieldRg: Campo de texto do RG;
  • jLabelMsgObrigatotioNome: Rótulo de campo obrigatório do nome;
  • jLabelMsgObrigatotioCpf: Rótulo de campo obrigatório do CPF;
  • jLabelMsgObrigatotioRg: Rótulo de campo obrigatório do RG.

Os rótulos de Nome*, RG*, CPF* foram criados utilizando apenas um rótulo e usando propriedades de HTML para mudar a cor do asterisco.

Fica como sugestão a leitura deste artigo: Personalizando o JLabel - Java Swing componentes NetBeans – Parte 7

Montamos a interface e trocamos o nome dos componentes que irão nos interessar no desenvolvimento dessa validação: JTextField e JLabel “Obrigatório”.

Ao desenvolvermos este tipo de validação vamos trabalhar com a visibilidade dos JLabel “Obrigatório”. Aí surgem duas opções iniciais:

Primeira Opção: este formulário pode aparecer para o usuário com todas as mensagens visíveis e, ao tentar exibir as informações caso alguma não seja preenchida, deixamos ela visível, deixando as que estão corretas invisíveis e exibimos uma mensagem para o usuário confirmar os dados.

Segunda Opção: este formulário pode aparecer para o usuário com todas as mensagens invisíveis e, ao tentar exibir as informações caso alguma não seja preenchida, deixamos ela visível e exibimos uma mensagem para o usuário confirmar os dados.

Para esta etapa em que as mensagens já aparecem invisíveis é necessário atribuir o valor de visibilidade como false.

Listagem 1: Código para as mensagens iniciarem invisíveis


jLabelMsgObrigatotioNome.setVisible(false);
jLabelMsgObrigatotioCpf.setVisible(false);
jLabelMsgObrigatotioRg.setVisible(false);

Já podemos definir como vai funcionar a validação. Inicialmente vamos definir que todos os campos devem possuir algum valor. Mas a sequência de código pode ser personalizada para determinar um valor diferente.

Para verificar se um campo de texto está vazio existem duas maneiras básicas: testando o tamanho do texto do componente, ou acionando a propriedade isEmpty().

A seguir temos o código para verificar se o tamanho do campo de texto é maior do que zero. Se for, passou na validação e a mensagem fica invisível. Aqui o valor Zero da validação pode ser substituído de acordo com a necessidade de informação.

Listagem 2: Verificando a existência de texto


    if (jTextFieldNome.getText().length() > 0) {
            jLabelMsgObrigatotioNome.setVisible(false);
        } else {
          jLabelMsgObrigatotioNome.setVisible(true);
        }

Agora temos o código para verificar se o campo de texto está vazio, faz a mesma coisa do anterior, diferença que apenas verifica se o campo está vazio.

Listagem 3: Usando a função isEmpty


if (jTextFieldNome.getText().isEmpty()) {
            jLabelMsgObrigatotioNome.setVisible(true);
        } else {
          jLabelMsgObrigatotioNome.setVisible(false);
        }

Após colocar o código de validação para cada campo no formulário, é necessário agrupar todas as condições em um IF separadas pela condição AND. Caso alguma das condições não seja satisfeita, é necessário exibir uma mensagem para a confirmação dos dados.

Na próxima listagem temos o código completo do botão Exibir, caso seja um botão Salvar, no lugar da mensagem do IF entra o código para efetuar a operação.

Listagem 4: Código do botão Exibir


if (jTextFieldNome.getText().length() > 0) {
            jLabelObrigatorioNome.setVisible(false);
        } else {
            jLabelObrigatorioNome.setVisible(true);
        }

        if (jTextFieldRg.getText().length() > 0) {
            jLabelObrigatorioRg.setVisible(false);
        } else {
            jLabelObrigatorioRg.setVisible(true);
        }
        if (jTextFieldCpf.getText().length() > 0) {
            jLabelObrigatorioCpf.setVisible(false);
        } else {
            jLabelObrigatorioCpf.setVisible(true);
        }
if ((jTextFieldNome.getText().length()>0)
                &&(jTextFieldRg.getText().length()> 0)
                && (jTextFieldCpf.getText().length() > 0)) {
            JOptionPane.showMessageDialog(null, "Dados Validados aqui deve ser efetuada a operação!!");
        } else {
            JOptionPane.showMessageDialog(null, "Confira os campos Obrigatórios!!");
}

Resumindo, este código acima faz a validação de três campos obrigatórios, é necessário preencher com alguma informação cada um dos campos. Além de auxiliar no preenchimento do formulário, este tipo de validação pode evitar que um cadastro seja salvo em branco no banco de dados, entre outros.

Espero que essas informações sejam úteis, principalmente para quem está começando a gora a desenvolver aplicações usando o Swing.

Até o próximo artigo.