Atualizar JTextField com valores de um arquivo .txt

4 respostas
tiagocampos65

Bom dia. Estou querendo fazer a seguinte aplicação.
Quero ler um arquivo .txt e quebrar cada palavra de cada linha e colocar em um JTextFiel separado.
Quebrei as palavras e atribui cada uma dela para uma variável.

Para ler um arquivo existe um while e esse while fica dentro de um ActionPerformace, que serve para receber a resposta do meu JFileChooser onde escolho o arquivo.txt.

O Problema é que não estou conseguindo atualizar os JTextField.

coloco jtextfield.setText(variavel); e nada acontece.
ele só atualiza quando acabo de ler o arquivo, ai coloca os dados da última linha no JTextFiel.
estou usando uma Thread de um segundo para que de tempo de ver as variaveis no JTextfield.

Já ouvi falar que é problema por estar dentro do ActionPerformace, e ele não deixa atualizar os campos do formulario (JFrame).

como eu posso fazer isso?

4 Respostas

dwduncan

Desculpe, sem a visualização do código fica bem difícil. Porém, pelo que você descreveu fica nítido que dentro de seu argumento while a variável está armazenado o valor da última leitura. Se ela á “UMA” variável ela apenas armazenará o valor da última iteração se não for devidamente tratada. Como não ví seu código, sugiro que use alguma clausula para armazenar o valor pretendido.

dwduncan

Além disso, você está utilizando o método split ? e recuperando em um String[] var para depois jTextField1.setText(var[0]);

lina

Oi,

Essa não está nulla não? ou vazia ?

Tchauzin!

tiagocampos65
public void manipular(String nome1) {		
		try {
			FileReader reader = new FileReader(new File(nome1));
			BufferedReader leitor = new BufferedReader(reader);
			
			 try {
				while ((texto = leitor.readLine()) != null) {								
					 System.out.println(texto);
						for(int tamanho = 0; tamanho < texto.length(); tamanho ++)
						{
							letra = texto.charAt(tamanho);
							
							palavra = palavra + letra;

							
							if(letra == ' ')
							{
								contCampos ++;			
								
								
								if(contCampos == 1)
								{
									concurso =  palavra;													
									
								}
								else if(contCampos == 2)
								{												
									datasorteio = palavra;
								}
								else if(contCampos == 3)
								{
									primeiradezena = palavra;
									
								}
								else if(contCampos == 4)
								{
									segundadezena = palavra;
								}
								else if(contCampos == 5)
								{
									terceiradezena = palavra;
								}
								else if(contCampos == 6)
								{
									quartadezena = palavra;
									
								}
								else if (contCampos == 7)
								{
									quintadezena = palavra;
									
								}
								else if (contCampos == 8)
								{
									sextadezena = palavra;
									
								}
								else if (contCampos == 9)
								{
									arrecadacaototal = palavra;
								}
								else if (contCampos == 10)
								{
									ganhadoressena = palavra;
								}
								else if (contCampos == 11)
								{
									rateiosena = palavra;
								}
								else if (contCampos == 12)
								{
									ganhadoresquina = palavra;
								}
								else if (contCampos == 13)
								{
									rateioquina = palavra;
								}
								else if (contCampos == 14)
								{
									ganhadoresquadra = palavra;
								}
								else if (contCampos == 15)
								{
									rateioquadra = palavra;
								}
								else if (contCampos == 16)
								{
									acumulado = palavra;
								}
								else if (contCampos == 17)
								{
									valoracumulado = palavra;
								}
								else if (contCampos == 18)
								{
									estimativapremio = palavra;
								}
								else if (contCampos == 19)
								{
									acumuladonatal = palavra;
									contCampos = 0;
								}										
							
								palavra = "";				

							}							
						}
						
					
					
							t_concurso.setText(concurso);
							t_data.setText(datasorteio);
							t_ganhadoresSena.setText(ganhadoressena);
							t_ganhadoresquina.setText(ganhadoresquina);
							t_acumulado.setText(acumulado);
							t_valor.setText(valoracumulado);

ai eu tenho uma thread

try 
								{
									Thread.sleep(1000);
								} catch (InterruptedException e) {
									
									e.printStackTrace();
								}

e pra baixo eu tenho códigos que não nos interessa agroa.
Ouvi dizer que tenho que colocar uma thread para atualiza. pois enquando o programa lê as linhas do arquivo, ele bloqueia o Frame e só libera quando acaba de le, e ai exibe o último registro.

Criado 2 de novembro de 2009
Ultima resposta 3 de nov. de 2009
Respostas 4
Participantes 3