Atualizar JLabels em tempo real. A cada 5 segundos ler os arquivos.txt
6 respostas
D
deljdl
Olá amigos do guj .
Estou numa luta com o java.
Não sei se esse é o caminho correto , mas depois de muita luta consegui o que queria : Pegar a primeira linha de dois arquivos.txt com esse codigo :
packagenetcontrol;importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;importjavax.swing.*;/** * * @author deljdl */publicclassNetcontrol{/** * @param args the command line arguments */publicstaticvoidmain(String[]args){JFramejanela=newJFrame();JPanelpainel=newJPanel();//////////////////////// maximoJLabelbotaomax=newJLabel();Stringmax="";try{BufferedReaderleitor=newBufferedReader(newFileReader("/home/deljdl/scripts/max.txt"));max=leitor.readLine();//System.out.println(linha);}catch(IOExceptione){}botaomax.setText("Velocidade Máxima : "+max);painel.add(botaomax);//////////////////////////////////////////////////// downfinalJLabelbotaodown=newJLabel();Stringdown="";try{BufferedReaderleitor=newBufferedReader(newFileReader("/home/deljdl/scripts/down.txt"));down=leitor.readLine();}catch(IOExceptione){}botaodown.setText("Velocidade Atual : "+down);painel.add(botaodown);////////////////////////////janela.add(painel);janela.setBounds(500,500,200,500);janela.setVisible(true);//deixa a janela visiveljanela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}
Mas esses arquivos.txt são modificados constantemente pelo proprio sistema. Como faço para atualizar meus JLabels em tempo real ? Tipo a cada 5 segundos ler os arquivos e atualizar os JLabels ?
importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;importjavax.swing.*;/** * * @author deljdl */publicclassNetcontrol{JLabelbotaomax;JLabelbotaodown;JFramejanela;JPanelpainel;Stringmax="";Stringdown="";publicNetcontrol(){janela=newJFrame();painel=newJPanel();botaomax=newJLabel();botaodown=newJLabel();painel.add(botaomax);painel.add(botaodown);janela.add(painel);janela.setBounds(500,500,200,500);janela.setVisible(true);//deixa a janela visivel janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/** * @param args the command line arguments */publicstaticvoidmain(String[]args){Netcontroln=newNetcontrol();while(true){n.net();temporizador();}}publicvoidnet(){try{BufferedReaderleitor=newBufferedReader(newFileReader("/home/deljdl/scripts/max.txt"));max=leitor.readLine();}catch(IOExceptione){}botaomax.setText("Velocidade Máxima : "+max);try{BufferedReaderleitor=newBufferedReader(newFileReader("/home/deljdl/scripts/down.txt"));down=leitor.readLine();}catch(IOExceptione){}botaodown.setText("Velocidade Atual : "+down);}publicstaticvoidtemporizador(){try{Thread.sleep(5000);}catch(InterruptedExceptione){}}}
Primeiro criei um método construtor e inicializei uns componetes ali.
O código restante que estava no método main eu coloquei no método chamado net.
O método main cria um laço infinito que chama o método net, criando os labels e após 5 segundos(através de temporizador()) volta a chamar net, atualizando os labels se houver alguma mudança nos arquivos .txt
Se houver problemas basta postar a dúvida.
R
Rafael_Costa_Teixeir
deljdl ,
Acredito que a forma mais apropriada é criando uma Thread que leia esses arquivos.