Problemas em criar JTextfields com Arrays

4 respostas
G
olá, estou com sério problema. Para enxugar meu código criei textfields através de arrays:
final JTextField tfcodigo[]  = new JTextField[11];

int pos  = 151;
		for(int i = 0; i < 11 ; i++){
			tfcodigo[i] = new JTextField();
			tfcodigo[i].setBounds(80, pos, 60, 25);
			tfcodigo[i].setEditable(false);
			princi.add(tfcodigo[i]);
			pos  = pos + 25;
			
		}
mas em determinado método, preciso pegar o valor de um desses textfields especificamente, mas ñ sei como fazer isso. Se tivesse criado-os um por um, sei que poderia fazer algo do tipo:
String sTal = tfcodigo.getText();
String sEtc = tfcodigo1.getText();

Mas como estão em um array, ñ consigo achar a forma certa de buscar a informação de um específico texfield.

Peço a ajuda de vcs pra resolver isso!

Abraço

4 Respostas

sech777

Se eu entendi bem, o collections framework pode te ajudar

//cria a coleção de objetos JTextField
Map<String, JTextField> myJTF = new HashMap<String, JTextField>();

for(int i=0; i<11; ++i){

       //executa os seus procedimentos
	JTextField jtf = new JTextField();  
         jtf.setBounds(80, pos, 60, 25);  
          jtf.setEditable(false);  
            princi.add(jtf);  
            pos  = pos + 25;  

        //associa um nome ao objeto JTextField e 
        //o adiciona à coleção
	myJTF.put("jTextField" + i, jtf);
}

//recupera o objeto JTextField pela chave (nome) atribuida...
String valor = myJTF.get("jTextField1").getText();
ViniGodoy

E qual seria o problema de fazer:
tfcodigo[3].setText()?

Outra possibilidade é fazer com que seu método receba uma lista de nomes. E então use esses nomes na propriedade name do JTextField. Depois fica fácil buscar um específico por nome.

zoren

Você pode também pegar os componentes que estão adicionados no seu JFrame e verificar se eles são uma instância de JTextField

G

a questão era conseguir um valor esecífico que voi dado no textfield, portanto o settext ñ funcionaria, pois a intenção era o inverso.
Mas consegui resolver, era apenas um erro de sintaxe. O certo seria assim:

final JTextField tfcodigo[]  = new JTextField[11];  
      
   int pos  = 151;  
            for(int i = 0; i < 11 ; i++){  
                tfcodigo[i] = new JTextField();  
               tfcodigo[i].setBounds(80, pos, 60, 25);  
               tfcodigo[i].setEditable(false);  
                princi.add(tfcodigo[i]);  
                pos  = pos + 25;  
                 
         }  // aki estão os textfields q foram criados

  String codi =  tfcodigo[1].getText ();  // e aki pego o valor específico.

Obrigado pela atenção e a ajuda!

Abraço

Criado 11 de setembro de 2009
Ultima resposta 11 de set. de 2009
Respostas 4
Participantes 4