Thread.sleep()

7 respostas
C

Estou tentando mostrar cada elemento de uma matriz em jtextfields em um jpanel, mas eu queria que ao preencher os valores nos textfields tivesse um intervalo de tempo para cada preenchimento.
Eu tentei usar o metodo sleep, mas não deu certo.

Alguem sabe algum outro método para fazer isso?

Obrigada!

7 Respostas

Robsonramosabrao

Posta o código para nós vermos.

ViniGodoy

A solução é com sleep mesmo.

Mas, como você está no Swing, lembre-se de preencher a sua matriz numa thread separada, chamando InvokeQueue.invokeLater() para atualizar os valores dos JTextFields.

Se vc se mantiver na mesma thread do Swing, você só vai ver a atualização uma vez, no final.

C

Como estou no trabalho e nao tenho o código aqui, fiz um teste aqui que tambem nao funciona.

try {

this.jTextField1.setText( 5 );

Thread.sleep( 500 );

this.jTextField2.setText( 5 );

Thread.sleep( 500 );

this.jTextField3.setText( 5 );

} catch( InterruptedException e){

System.out.println( InterruptedException );

}

Queria que cada valor desse aparecesse com um intervalo de tempo um do outro, e nao todos juntos. Nesse codigo todos aparecem no mesmo momento.

Obrigada.

ViniGodoy

Você está rodando de outra thread, como eu falei?
Ou isso está simplesmente dentro do seu ActionListener…

Se não estiver numa outra thread, não vai funcionar.

Se estiver usando Java 6, procure informações sobre SwingWorker.

C

Nao tenho experiencia com threads, como eu faria para criar a matriz em um thread separada??

ViniGodoy

A matriz pode ficar na mesma classe, você só precisa alterar o seu método de pintura:

new Thread() {
   private void setText(final JTextComponent txt, final String value) {
      EventQueue.invokeLater(new Runnable() {
         public void run() {
            txt.setText(value);
         }
      });
    }

   public void run() {
      try { 
         setText(jTextField1, "5"); 
         Thread.sleep( 500 ); 
         setText(jTextField2, "5"); 
         Thread.sleep( 500 ); 
         setText(jTextField3, "5"); 
      } catch( InterruptedException e){ 
         System.out.println( "InterruptedException" ); 
      } 
   }
}).start();
C

Funcionou perfeitamente.

Brigadao!

Criado 7 de novembro de 2007
Ultima resposta 8 de nov. de 2007
Respostas 7
Participantes 3