Classe para limpar campos [Resolvido]

10 respostas
J

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

// 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) {
				
			}
		}
	}
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 !!!

10 Respostas

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

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

Gobain

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[].

diego2005

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+

marcushlm

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:

priscila.vriesman

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

priscila.vriesman

Eiitaaaaaaa…

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

:slight_smile:

tonheds
  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

Gobain

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.

B

priscila.vriesman:
Eiitaaaaaaa…

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

:)

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

J

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).

Criado 29 de outubro de 2007
Ultima resposta 21 de jul. de 2009
Respostas 10
Participantes 7