Capturar uma tecla durante While infinito

1 resposta
K

Bom dia!

Estou enfrentando o seguinte problema:

Estou desenvolvendo uma aplicação que checa a cada x segundos uma coluna no BD.
Para isso o programa fica em um while infinito, mas eu queria que ao usuário apertar alguma tecla o while seja interrompido.

o code é basicamente esse:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
               boolean x = true;

                while (x) 
                {  
		        try 
                      {
                          Conecta no banco
		          executa query
                          while (qtd_para_atualizar_2.next()) 
                          {
                             pega valor do campo
                          }

                          seta valor no Label
 }
                      catch (Exception e)
                      {
                          System.err.println("Got an exception! ");
                          System.err.println(e.getMessage());
                      }

                }  
    }                                        
 public static
         void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public  void run() {
                new Index().setVisible(true);
            }
        });
 
    }

Depois que ele entra no while ele trava a aplicação e fica atualizando a tela com o resultado, porem, não consigo finalizar o programa nem clicando em Close.

Vocês podem me ajudar?

Obrigado!

1 Resposta

rmendes08

O problema é que você ocupa a thread EventDispatcher 100% do tempo com processamento que não tem a ver com interface gráfica. Assim, você deve colocar a verificação do banco de dados em uma thread separada, de forma que a tela não ficará travada.

De maneira geral, é interessante você ler esse tutorial sobre concorrência no Swing:

http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html

Criado 31 de outubro de 2014
Ultima resposta 31 de out. de 2014
Respostas 1
Participantes 2