Array de objetos p/ validação

5 respostas
antoniodourado

Olá amigos… estou desenvolvendo um esqueleto de sistema pra tentar me familiarizar com java e me deparei com mais um problema… Validação de campos!

Estou usando netbeans para fazer a parte visual da coisa e por tras disso estou fazendo algumas validações quando vou gravar algo. Pois bem, trabalho como web-developer em uma empresa daki e por lá eu valido meus códigos da seguinte forma no javascript:

-Crio um array com os nomes fisicos dos campos a serem validados
-Faço um laço percorrendo eles e checando seu conteudo que, em caso de estarem vazios, não dão continuidade ao programa.

Gostaria de fazer o mesmo em Java, mas não estou conseguindo… basicamente seria:

-Vetor com o nome dos JTextFields do programa
-Laço percorrendo esse vetor e checando seu conteudo.

seria algo como:

for(var i=0;i<VETOR.length;i++)

if(VETOR[i].getText().trim()==""){

return false;

}

return true;

Mas o problema está sendo como colocar os campos em um array pra depois rodar o laço!

Alguém já fez algo assim e poderia me ajudar?
Abraços!>

5 Respostas

diego2005

Um exemplo (caso seus JTextFields estejam em um JPanel):

for(int i = 0; i < meuJPanel.getComponentCount(); i++) { Object o = meuJPanel.getComponent(i); if(o instanceof JTextField) { if((JTextField(o)).getText.equals("")) { // faz alguma coisa.. } } }

T+

antoniodourado

Isso resolve meu problema pro meu caso atual… mas suponhemos que eu tenha um 5 campos num JFrame e que um deles seja apenas de comentário e eu nao tenha necessidade de validar ele? Ou mais, um formulario extenso com mais de 15 campos onde eu nao necessite validar 7 ou 8 desses campos?

Alias, não resolve meu problema… pq na verdade os campos estão apenas dentro de um JFrame =/

Como posso acessá-los?

diego2005

Hum, diretamente em um JFrame?? Não sabia que isso é possível, pois pelo que sei quando fazemos:

JFrame frame = new JFrame(); frame.add(new JTextField());

Estamos adicionando o JTextField em um JPanel, o contentPane, que já vem com o JFrame. O código acima seria equivalente a:

JFrame frame = new JFrame(); frame.getContentPane().add(new JTextField());

Então pra vc acessar seus JTextFields é só acessar o contentPane.

Se eu estiver errado alguém me corrija, por favor.

T+

antoniodourado

Diego, consegui acessar os JTextFields!

for(i=0;i<this.getContentPane().getComponents().length;i++){
            Object o = this.getContentPane().getComponent(i);
            if(o instanceof JTextField){
                //if((JTextField(o)).getText().equals("")){
                    //
                }
            }
            
            
}

Mas eu nao consigo acessar o conteudo do JTextField! Note que a linha está comentada!

Vc ainda pode me ajudar?

Valeu ateh agora pela ajuda!!!

>

diego2005

Tenta assim:

for(i = 0; i < this.getContentPane().getComponents().length; i++) { Object o = this.getContentPane().getComponent(i); if(o instanceof JTextField) { if(((JTextField)o).getText().equals("")) { // ... } } }

T+

Criado 18 de agosto de 2007
Ultima resposta 18 de ago. de 2007
Respostas 5
Participantes 2