KeyListener

2 respostas
pedroroxd

Pessoal... Tenho 20 JTextFields no meu formulario..

Em todos queria colocar um KeyListener, para a medida que a pessoa digitar algo em qualquer um deles, va fazendo um somatorio..
Para nao ficar repetindo a mesma coisa para os 20 jTextFields, eu resolvi fazer um vetor deles:

private JTextField [] fields = {txtA,txtB,txtC,txtD (...)

E depois tentei fazer isso (colocar o Listener em todos):

for (int i=0; i<fields.length; i++) {
			fields[i].addKeyListener(new KeyListener() {
				@Override
				public void keyTyped(KeyEvent arg0) {
				}
				
				@Override
				public void keyReleased(KeyEvent arg0) {
					float num = Float.parseFloat(fields[i].getText()); //ERROR
				}
				
				@Override
				public void keyPressed(KeyEvent arg0) {	
				}
			});
		}
Soh que da erro, fala que o i tem que ser final... Mas se ele for final eu nao posso incrementar ele (i++) Como posso resolver essa situacao, sem repetir esse bloco de codigo acima 20 vezes?

Abraços.

2 Respostas

pedroroxd

Valew pessoal…
Consegui fazendo assim:

float num = Float.parseFloat(((JTextField) arg0.getComponent()).getText());
isaiaspf

Pedro,

Uma outra solução simples para este caso é mudar o escopo da variável i.
private JTextField [] fields = {txtA,txtB,txtC,txtD (...)};
private int i;
for(i = 0; i < fields.length; i++) {
	fields[i].addKeyListener(new KeyListener() {
		@Override
		public void keyTyped(KeyEvent arg0) {
		}

		@Override
		public void keyReleased(KeyEvent arg0) {
			float num = Float.parseFloat(fields[i].getText());
		}

		@Override
		public void keyPressed(KeyEvent arg0) {
		}
	});
}
Abraço.
Criado 12 de julho de 2011
Ultima resposta 12 de jul. de 2011
Respostas 2
Participantes 2