Pessoal boa tarde,
Primeiramente quero me desculpar pelo título, não sei se é correto dizer validar campos ao invés de validar componentes (é que venho de estrutura procedural, sabe como é, rsrsrs), mas minha curiosidade é a seguinte:
Onde trabalho um dos desenvolvedores criou alguns componentes (ainda não sei bem como funciona, mas vou correr atrás, rsrsrs) pra utilizarmos em nossos projetos, e particularmente ficou show de bola, todos os componentes como JTextField, JPasswordField, assim por diante, possuem mensagens de aviso, erro, informação, possuem também o status de obrigatoriedade, muito interessante.
Agora indo pra minha curiosidade… Precisei criar um método que varresse todos os componentes obrigatórios, sendo que estavam em várias abas, ou seja, dentro de vários containeres, pesquisando um pouco sobre método recursivo, criei o método abaixo:
public void validaCampos(Container painel){
Component[] cp = painel.getComponents();
for(int i=0; i<cp.length; i++){
if(cp[i] instanceof JTextField && ((JTextField)cp[i]).isObrigatorio()){
// mensagem de preenchimento
}
if(cp[i] instanceof JPasswordField && ((JPasswordField)cp[i]).isObrigatorio()){
// mensagem de preenchimento
}
// outros campos a serem validados aqui
if(cp[i] instanceof Container){
validaCampos((Container)cp[i]); // aqui eu uso recursividade
}
}
}
está funcionando belezinha, mas minha curiosidade é se estou seguindo legal a orientação a objetos, ou estou fugindo muito do conceito, o meu “pulo do gato” realmente foi o teste que verifica se é container e chama o método novamente, assim se eu quiser colocar mais componentes em alguma aba, não corro o risco de perdê-lo na validação, só preciso incluí-lo nesses testes caso ele seja algum que ainda nao foi utilizado.
pessoal agradeço muito se vocês puderem opinar, creio que muita gente também tem dúvida quanto a isso, e ao me ajudarem, estão ajudando mais pessoas também.
valeu e fico no aguardo.