Setar todos os JTextFields

Olá gostaria de setar todos o JtextFields do conteiner para " "(vazio). Sem chamar cada um dos JTextField individualmente.

Eu escrevi essa função aqui:

private void limparCampos() { JTextField fields = new JTextField(); for(int count = 0; count < this.getComponentCount(); count++){ if(this.getComponent(count).equals(javax.swing.JTextField.class)){ fields.setText(" "); } } }

mas não esta dando certo.

Claro, a função não faz sentido:

  1. Você está comparando um componente com uma classe;
  2. Você está atribuindo vazio a um componente previamente criado, que não é o que vc comparou.

O certo seria:

private void limparCampos() {  
   for(int count = 0; count &lt; this.getComponentCount(); count++) {
      if(this.getComponent(count) instanceof javax.swing.JTextField) {  
         JTextField field = (JTextField) (this.getComponent(count));
         field.setText(&quot;&quot;);
      }  
   }  
} 

este codigo altera o texto de um JTextField mais vc pode colocar algo parecido em um metodo e chamar este metodo em um loop

Espero q isso ajude

import java.lang.reflect.Field;
import javax.swing.JTextField;

public class Telinha {
	JTextField jt1 = new JTextField();
	
	public static void main(String[] args) {
		Telinha tela = new Telinha();
		tela.jt1.setText("texto original");
		System.out.println(tela.jt1.getText());
		Field[] campos = tela.getClass().getDeclaredFields();

		// Ate aqui temos um array com os atributos da classe
		 
		try {
			Class classe = campos[0].getClass().forName("javax.swing.JTextField");
			JTextField f = (JTextField) classe.cast(tela.jt1);
//			 aqui vc pode alterar o atributo
			f.setText("meu novo texto ");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println(tela.jt1.getText());
		
	}
}

[quote=Thiago veiga]este codigo altera o texto de um JTextField mais vc pode colocar algo parecido em um metodo e chamar este metodo em um loop

Espero q isso ajude

[code]
import java.lang.reflect.Field;
import javax.swing.JTextField;

public class Telinha {
JTextField jt1 = new JTextField();

public static void main(String[] args) {
	Telinha tela = new Telinha();
	tela.jt1.setText("texto original");
	System.out.println(tela.jt1.getText());
	Field[] campos = tela.getClass().getDeclaredFields();

	// Ate aqui temos um array com os atributos da classe
	 
	try {
		Class classe = campos[0].getClass().forName("javax.swing.JTextField");
		JTextField f = (JTextField) classe.cast(tela.jt1);

// aqui vc pode alterar o atributo
f.setText("meu novo texto ");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

	System.out.println(tela.jt1.getText());
	
}

}

[/code][/quote]

Po cara valeu pela dica, mas o que eu quero é limpar todos os JTextField adicionados no Frame, entendeu?
Obrigado mesmo assim, valeu.

E não funcionou daquele jeito que eu postei? Eu não testei.

Como ele não respondeu eu respondo:

Funciona normal ^^

Se for a partir do java 5, pode-se utilizar o enhanced-for tambem:

for (Component disableJTextField : this.getComponents()) { if (disableJTextField instanceof JTextField) { JTextField textField = (JTextField) disableJTextField; textField.setText(" "); } }

Dicas sobre o enhanced-for:
http://www.java-tips.org/java-se-tips/java.lang/the-enhanced-for-loop.html

Ve se isso te ajuda

import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class guj {
	JFrame fr = new JFrame();

	JTextField jt = new JTextField();

	JTextField jt2 = new JTextField();

	public void teste() {
		JPanel cp = new JPanel();
		jt.setText("texto original");
		jt.setName("nome");
		jt2.setText("texto original2");
		jt2.setName("nome2");
		cp.add(jt);
		cp.add(jt2);
		fr.add(cp);
		fr.setSize(300, 200);
		fr.setVisible(true);
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for (Component c : cp.getComponents()) {
			if (c instanceof JTextField) {
				JTextField j = (JTextField) c;
				j.setText("");
			}
		}

	}

	public static void main(String[] args) {
		guj g = new guj();
		g.teste();
	}
}