Como criar timer para iniciar uma ação?

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:

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

Ira parar por 1 segundo

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

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:

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

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 {
@Override
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);
}
}
}

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