Como criar timer para iniciar uma ação?

6 respostas Resolvido
java
R

Olá, estou aprendendo ainda sobre programação no meu curso e foi pedido para fazer um joguinho simples utilizando jFrame’s… então tive a ideia de fazer um pequeno jogo de luta apenas com um botão pra dar um chute no adversário, porém, na parte do chute eu criei dois jLabel com fotos dos personagens, sendo um com setVisible(false) e o outro true, e quando fosse apertado o botão o que estava true ficasse falso e o false ficasse true, e depois de alguns milissegundos voltasse ao estado original, só que não consegui fazer um contador, algo para “pausar” o evento.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    jLabel1.setVisible(false);
    jLabel3.setVisible(true);
    //Parte do delay ou pausa
    jLabel1.setVisible(true);
    jLabel3.setVisible(false);
 }                                        

private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
    jLabel3.setVisible(false);       
}

Bom, se puder me ajudar eu agradeço imensamente.:smile:

6 Respostas

lucas.sampaio

Faz um listener usando o método keyPress, se pressionado não mostra o label, caso contrário, mostra o label.
Aqui está um exemplo: https://stackoverflow.com/a/13042560

R

Ira parar por 1 segundo

try {

Thread.sleep(1000);

} catch (InterruptedException ex) {

ex.printStackTrace();

}
R

Esse código faz o evento demorar para iniciar e não “pausa” ele. Por exemplo, eu aperto o botão, demora um segundo e faz tudo de uma vez :cry:

R

Pelo link não entendi direito, poderia explicar melhor?

R
Solucao aceita

Certo, você quer saber como parar a execução por um tempo, este é o código.
Agora tenta o seguinte

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

acaoBotao ex = new acaoBotao();

Thread botoes = new Thread(ex);

botoes.start();

}
class acaoBotao implements Runnable {

<a class="mention" href="/u/override">@Override</a>

public void run() {

try {

jLabel1.setVisible(false);

jLabel3.setVisible(true);

Thread.sleep(1000);

} catch (Exception e) {

e.printStackTrace();

} finally {

jLabel1.setVisible(true);

jLabel3.setVisible(false);

}

}

}
R

Caraca, era exatamente oque eu queria, muito obrigado!:smiley:

Criado 20 de outubro de 2018
Ultima resposta 20 de out. de 2018
Respostas 6
Participantes 3