Não consigo validar se um JTextArea esta vazio ou não

1 resposta
FabricioPJ

Olá a todos. Tenho um método (mais abaixo) que valida se uma série de componentes foram preenchidos ou não. O Problema é que para um JTextArea que tenho, ele não valida se o mesmo está ou não vazio. Segue o código do método:

public static boolean validaCampos(JPanel painel, JTextField txt1, JTextField txt2, JTextField txt3, JTextArea txtArea){
        boolean resposta = false;

        if(txt1.getText().equals("") || txt2.getText().equals("") ||
           txt3.getText().equals("") || txtArea.getText().trim().equals("")){ //IF TESTA CAMPOS ESTAO VAZIOS...
           resposta = false;

            Component[] componente = painel.getComponents();
            for (Component c : componente){
                if(c instanceof JTextField){ //IF TEXTFIELD
                    if(((JTextField)c).getText().equals("")){ //IF 2
                        c.setBackground(Color.RED);
                        c.setForeground(Color.WHITE);
                    } //FIM IF 2
                    else{
                        c.setBackground(Color.WHITE);
                        c.setForeground(Color.BLACK);
                    }
                } //FIM IF TEXTFIELD
                if(c instanceof JTextArea){ //IF TEXTAREA
                    if(((JTextArea)c).getText().trim().equals("") || ((JTextArea)c).getText().length() == 0){
                        c.setForeground(Color.WHITE);
                        c.setBackground(Color.RED);
                    }
                    else{
                        c.setBackground(Color.WHITE);
                        c.setForeground(Color.BLACK);
                    }
                }//FIM IF TEXTAREA
            } //FIM FOR...
        }//FIM IF TESTA CAMPOS ESTAO VAZIOS...
        else{
            resposta = true;
        }
        return resposta;
    } //FIM METODO...

Este método é chamado dentro do actionEvent de um botão de cadastro, como segue abaixo:

ComandoDAO c = new ComandoDAO();

//O campo "descricao" tem tamanho maximo de 1000 caracteres no banco de dados...
if(txtDescricao.getText().length()  > 1000){
    JOptionPane.showMessageDialog(null, "Descrição muito extensa.", "Erro", JOptionPane.ERROR_MESSAGE);
    txtDescricao.selectAll();
    txtDescricao.requestFocus();
} else{

    if(MetodosUteis.validaCampos(jPanel6, txtNomeComando, txtSOComando, txtPalavrasChave, txtDescricao)){
        if(c.insereComando(txtNomeComando.getText().toUpperCase(), txtSOComando.getText().toUpperCase(), txtDescricao.getText().toUpperCase(), txtPalavrasChave.getText().toUpperCase())){
            lblStatusInsercao.setForeground(Color.GREEN);
            lblStatusInsercao.setText("Comando " + txtNomeComando.getText().toUpperCase() + " inserido com sucesso.");
            limpaCampos();
            totalChar = 0;
        } else{
            lblStatusInsercao.setForeground(Color.RED);
            lblStatusInsercao.setText("Erro ao inserir o comando " + txtNomeComando.getText().toUpperCase());
        }
    } else{
        JOptionPane.showMessageDialog(null, "Algum(ns) campo(s) não foi(foram) preenchido(s)", "Erro", JOptionPane.ERROR_MESSAGE);
    }
}

O que eu queria na verdade era quando algum campo estivesse vazio, sua cor de fundo fosse alterada para vermelho. Isso esta ocorrendo com sucesso para os JTextField, mas para o JTextArea não.

Se alguém tiver alguma sugestão... pode dizer.

Obrigado pela atenção.

1 Resposta

xandevieira

ve se te da uma ideia.

String string = "     ";//5 espacos
		if(string.trim().length()==0){
			System.out.println("A String eh vazia");
		} else {
			System.out.println("A String nao eh vazia");
		}
Criado 16 de setembro de 2009
Ultima resposta 17 de set. de 2009
Respostas 1
Participantes 2