Classe para limpar campos [Resolvido]

Boa tarde senhores

Eu estou tentando montar uma classe para limpar os campos de um fórmulario, independente de ser JTextField, JComboBox, etc … (Parecido como era no VB por exemplo que vc varria um vetor de objetos com o Foreach) …
Alguém sabe como fazer??? …

Eu estou querendo passar o JPanel para o método e ele fazer a varredura dos componentes pra mim !!!

Eu tava fazendo assim(e estava dando errado)

// seta os defaults public void limpaTela(JPanel obj){ Class classe = obj.getClass(); Field atributo[] = classe.getDeclaredFields(); for (int i = 0; i < atributo.length; i++){ if (atributo[i].getType().getSimpleName().equals("JTextField")) { //JOptionPane.showMessageDialog(null, "Atributo: "+atributo[i].getType().getSimpleName()); atributo[i].getType().getSimpleName().setText = ""; } } }

Ae, em outro fórum me disseram pra partir por esse caminho

[code] // seta os defaults
public void limpaComponentes(JPanel obj){
String Component[];
Component[] comps[] = obj.getComponents();
for (int i = 0; i < comps.length; i++){
if (comps[i] instanceof JTextField) {

		}
	}
}[/code]

porém, esse último eu não entendi o que significa

Component[] comps[] = obj.getComponents();  

Quem puder me ajudar, por favor, preciso de uma luz rsrs

Um abraço a todos !!!

Component[] comps[] = obj.getComponents();  

retorna um array de componentes que estão no JPanel que foi passado.

Com o método getComponents() vc pega todos os componentes que fazem parte do teu JPanel.

ps. Acho q o certo seria vc usar Component[] comps ou Component comps[].

Acho que do último modo funciona:

public void limpaComponentes(JPanel obj){ Component[] comps[] = obj.getComponents(); // retorna todos os componentes do JPanel for (int i = 0; i < comps.length; i++) { if (comps[i] instanceof JTextField) { // verifica se é um JTextField ((comps[i]) JTextField).setText(""); } } }

T+

do jeito que o diego2005 disse deve funcionar sim, você tambem pode fazer um outro if e checar se trata-se de outro tipo de componente e tratar cada caso.

se for um um combobox por exemplo, você pode voltar a seleção para a primeira opção :wink:

Oi!!!

Eu fiz assim, e funcionou!! :-o

for (int i=0; i < getContentPane().getComponentCount(); i++) { Component c = getContentPane().getComponent(i); if (c instanceof JTextField) { JTextField field = (JTextField) c; field.setText(""); } }

t+
:slight_smile:

Priscila Vriesman

Eiitaaaaaaa…

Agora que vi…praticamente a mesma coisa do código do diego
ali em cima…

:slight_smile:

  1. public void limpaComponentes(JPanel obj){
  2. Component[] comps[] = obj.getComponents(); // retorna todos os componentes do JPanel      
    
  3. for (int i = 0; i < comps.length; i++) {       
    
  4.     if (comps[i] instanceof JTextField) {   // verifica se é um JTextField  
    
  5.            ((comps[i]) JTextField).setText("");  
    
  6.     }     
    
  7. }     
    
  8. }

no caso dessa linha de código acima, eu teria que primeiro criar alguma classe chamada JPanel?
desculpem ai a pergunta, mas que sou novo em JAVA…

grato

JPanel é uma classe de Java (javax.swing.JPanel), e nesse caso é um objeto passado como parâmetro nessa função, de onde os componentes são usados na iteração.

Só uma observação tonheds, coloque o seu código dentro das tags [ CODE ] pra ele sair formatado e ser mais fácil de ler.

[quote=priscila.vriesman]Eiitaaaaaaa…

Agora que vi…praticamente a mesma coisa do código do diego
ali em cima…

:)[/quote]

A diferença é que o teu está certo.

Muito obrigado pessoal, problema resolvido
Usei a solução da priscila.vriesman
Obrigado a todos (eu já tinha largado mão de fazer isso, mas, agora tá legalzinho o esquema).