Estou fazendo uns testes com Thread, eu fiz esse código para uma bolinha pular alguns obstáculos, porem a Thread que faz pular, só pode ser usado uma vez, gostaria de saber o que estou fazendo de errado, ou se falta algumas coisa para a bolinha pular quantas vezes forem necessárias.
package PulaPula;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
@SuppressWarnings("serial")
public class Tela extends JFrame implements KeyListener {
public static void main(String[] args) {
new Tela();
}
public Tela() {
editaTela();
editaImagens();
addKeyListener(this);
}
JLabel fundo = new JLabel(new ImageIcon("gramasol.jpg"));
JLabel Bolinha = new JLabel(new ImageIcon("Bolinha.png"));
int x = 300, y = 900, i = 0;
Pulo p = new Pulo();
public class Pulo extends Thread {
@Override
public void run() {
while (i != 200) {
try {
sleep(10);
if (i <= 100) {
y -= 1;
Bolinha.setBounds(x, y, 110, 110);
} else {
y += 1;
Bolinha.setBounds(x, y, 110, 110);
}
i++;
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
public void editaTela() {
setSize(1920, 1080);
setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
setResizable(false);
add(Bolinha);
add(fundo);
}
public void editaImagens() {
fundo.setSize(1920, 1080);
fundo.setVisible(true);
Bolinha.setBounds(x, y, 110, 110);
Bolinha.setVisible(true);
}
@Override
public void keyPressed(KeyEvent e) {
int cod = e.getKeyCode();
if (cod == KeyEvent.VK_A)
x -= 8;
if (cod == KeyEvent.VK_D)
x += 8;
if (cod == KeyEvent.VK_SPACE) {
p.start();
}
Bolinha.setBounds(x, y, 110, 110);
p.isAlive();
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}