Metodo para limpar todos os campos de JTextField

Pessoal estou tentando criar um metodo para limpar todos os campos JTextField de um JFrame. Li todos os topicos do forum e nenhum me ajudou. Se alguem puder me ajudar agradeço!

Tenho tentado assim

public void limparCampos(Container container)
{
Component components[] = container.getComponents();

for (Component component : components)
{
if (component instanceof JTextField)
{
((JTextField)component).setText(null);
}
}
}

Abraço

Oi khaue,

private void limpar()
{
  
     JTextField.setText("");
   
}

Sim até ai eu entendo, mas queria um que se aplicasse no foreach para ser usado para limpar todos os campos

[code]public void limparCampos(Container container)
{
Component components[] = container.getComponents();

for (Component component : components)
{
if (component instanceof JTextField)
{
((JTextField)component).setText(null);
}
}
}
[/code]

Esse container que vc espera no argumento do método, vc tem que passar seu JPanel.

[code]Component components[] = seuJPanel.getComponents();

for (Component component : components)
{
if (component instanceof JTextField)
{
((JTextField)component).setText(null);
}
} [/code]

[code]public void limparCampos(JFrame container)
{
Component components[] = container.getComponents();

for (Component component : components)
{
if (component instanceof JTextField)
{
((JTextField)component).setText(null);
}
}
}
[/code]

Fiz dessa forma , pois estou utilizando JFrame, mas não deu certo, não deu erro tbm não limpou.

[quote=khaue_viana_@hotmail.com][code]public void limparCampos(JFrame container)
{
Component components[] = container.getComponents();

for (Component component : components)
{
if (component instanceof JTextField)
{
((JTextField)component).setText(null);
}
}
}
[/code]

Fiz dessa forma , pois estou utilizando JFrame, mas não deu certo, não deu erro tbm não limpou.[/quote]

Sim mas no seu JFrame vc nao usa um JPanel pra add seus Components?

Primeiro, vc pode usar um método recursivo para obter todos os componentes a partir de um determinado container.

[code]
public class Utils {

public static List<Component> getAllComponents( Container container ) {

    List<Component> components = new ArrayList<Component>();

    for ( Component c : container.getComponents() ) {

        components.add( c );

        if ( c instanceof Container ) {
            components.addAll( getAllComponents( ( Container ) c ) );
        }
    }

    return components;

}

}[/code]
Obtendo então essa lista, vc pode então dar os setText( “” );

Imagine que estamos dentro do método de um JFrame. Você faria assim:

for ( Component c : Utils.getAllComponents( getRootPane() ) ) { if ( c instanceof JTextField ) { ( ( JTextField ) c ).setText( "" ); } }
[]´s

Pra que esse método recursivo? Se os components dele estiver em um JPanel e ele fizer: Component components[] = jPanelUsado.getComponents(); irá retornar todos os components que estiver la.

Fiz o que você aconselhor e deu certo direto no JFrame.

Mas quero utilizar um metodo

public void limparCampos(JPanel container)
{
    Component components[] = container.getComponents();
    for (Component component : components)
    {
        if (component instanceof JTextField)
        {
            ((JTextField)component).setText(null);
        }
    }

E no JFrame fiz dessa forma

 calc.limparCampos(pnePrincipal);

Mas não deu certo. Muito estranho.

Vou responder sua pergunta com três perguntas:
E se dentro do painel tiver outro painel? E se dentro deste outro painel, tiver outro painel? E só então ter os campos?

A estrutura esta assim:

JFrame - JPanel - JTextField.

E mesmo assim usando meu metodo num da certo.

Vou responder sua pergunta com três perguntas:
E se dentro do painel tiver outro painel? E se dentro deste outro painel, tiver outro painel? E só então ter os campos?[/quote]

Respondeu kkk

PESSOAL DEU CERTO AKI

AGRADEÇO A TODOS!!!

Bem, só pra complementar, uma alternativa seria também manter uma lista específica dos JTextField, assim você não precisa nem de recursão nem ficar testando se a instância é de uma determinada classe.

Num entendi direito, mas mesmo assim agradeço muito a atenção!

Isso aqui não funcionou?
http://www.guj.com.br/posts/list/216682.java#1105939

Relacionado a esse que você me mostrou, muitos me mostraram identicos, mas não deu certo. Eu crio esse metodo dentro de uma classe e coloco como parâmetro JFrame ou JPanel. Mas não dá certo. No C# faço isso tranquilo. No java não é possivel?

Teria que ver pq não dá certo. Sempre usei algo assim, e sempre funcionou.

Você pode postar o código onde tentou usar?