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.