[URGENTE] Capturar componentes passados como parâmetro

3 respostas
java-seprogramaçãojava
Chaybelucas

Olá!
Então… Vou dar um exemplo, pois creio ser o jeito mais fácil de passar a minha dificuldade

import javax.swing.*;

public class Principal {
	JFrame frame = new JFrame();
	//
	JPanel painel = new JPanel();
        JScrollPane scroll = new JScrollPane();
	//
	JLabel label ;
	JTextField texto ;
	//
	public void criarTela() {
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
		frame.setLayout(new GridLayout(2,1));
		//
		painel.setLayout(new MigLayout());
		//
		for (int i=0 ; i<80 ; i++) {
			painel.add(new JLabel("Texto "+i));
			painel.add(new JTextField());
			
		}
		//
		scroll_question.setViewportView(painel);
                //
		frame.add(scroll);
		//
		frame.setVisible(true);
               //
		
	}
	
}

Claro que é apenas um exemplo, o original está adicionando tranquilamente novos Componentes e “rolando” o JPanel com o JScrollPane tranquilamente. A pergunta é…

Ali no meu for estou adicionando os componentes JLabel e JTextField. Mas como posso capturar o texto digitado no JTextField?

Detalhe: Não existe uma quantidade limite para o for ficar rodando. Neste exemplo usei 80 como limite, mas no sistema real pode ser 20, pode ser 100, pode ser qualquer valor, dependendo do que usuario quer…

3 Respostas

viny_2

existem alguns método que manipulam sua view como por exemplo: getComponents, getComponentCount, getComponentAt, getComponent… Procure no javadoc esses métodos do JPanel para maiores informações… mas, na minha opinião vejo o seu exemplo não muito claro para mim… Não vejo a funcionalidade coerente do seu sistema… neste aspecto, talvez falta-me imaginação :slight_smile:

Bem, uma solução que eu acho mais simples, que não vai alterar tanto o desempenho do seu sistema, em uma primeira analise e fazer uma array de elementos tipo

Jlabel[] labels = new JLabel[quantidadeDeElementos]
JTextField textFields = new JTextField[quandidadeDeElementos]

for (int i=0 ; i< quantidadeDeElementos ; i++) {
     labels[i] = new JLabel("Texto "+i);
     textFields[i] = new JTextField();
     painel.add(labels[i]);
     painel.add(textFields[i]);
}

assim é só procurar fazer uma busca na array ou até mesmo iterar para pegar todos os dados um por um ou fazer um conta, sei lá por exemplo, não sei se é o caso, o total dos dados do textField…

Chaybelucas

O sistema é simples… Muito obrigado pela ajuda :wink:
Vou seguir esta forma de fazer, pois não vem nada à mente para resolver… rs

Apesar disso, continuo buscando.
Muito obrigado pela ajuda, me iluminou aqui kk

Novamente, obrigado!

viny_2

se você poder explicar melhor poderá ter mais respostas esclarecedoras… fica a dicam :slight_smile:
No momento não entendi muito bem sua pretensão por isso imaginei algo deste tipo…

Criado 20 de janeiro de 2017
Ultima resposta 23 de jan. de 2017
Respostas 3
Participantes 2