Olá, eu gostaria de saber porque as threads do meu código não são executadas? Eu gostaria de fazer com que as labels se mexessem nessas threads, mais elas nem mesmo são executadas, alguém pode me ajudar?
Código:
`
package Objects;
import java.awt.Image;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Passaro extends JFrame{
Random rdm = new Random();
boolean bo;
int passquant;
Passaro(){
setTitle("Título");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setExtendedState(JFrame.MAXIMIZED_BOTH);
setLayout(null);
passquant = rdm.nextInt(9);
for(int i = 0; i<=passquant; ++i){
bo = rdm.nextBoolean();
System.out.println(bo);
if(bo==true){
ImageIcon img = new ImageIcon(getClass().getResource("/Assets/pássaro-i.gif"));
img.setImage(img.getImage().getScaledInstance(img.getIconWidth()-500,img.getIconHeight()-400, Image.SCALE_DEFAULT));
int largura = img.getIconWidth();
int altura = img.getIconHeight();
JLabel p = new JLabel(img);
p.setBounds(0,rdm.nextInt(this.getContentPane().getHeight()),largura,altura);
this.add(p);
this.repaint();
new Thread(new Runnable(){
public void run(){
System.out.println("rund");
while(true){
p.setBounds(p.getX()+1,p.getY(),largura,altura);
}
}
});
}else if(bo==false){
ImageIcon img = new ImageIcon(getClass().getResource("/Assets/pássaro.gif"));
img.setImage(img.getImage().getScaledInstance(img.getIconWidth()-500,img.getIconHeight()-400, Image.SCALE_DEFAULT));
int largura = img.getIconWidth();
int altura = img.getIconHeight();
JLabel p = new JLabel(img);
p.setBounds(this.getWidth()-100,rdm.nextInt(this.getContentPane().getHeight()),largura,altura);
this.add(p);
this.repaint();
new Thread(new Runnable(){
public void run(){
System.out.println("run");
while(true){
p.setBounds(p.getX()-1,p.getY(),largura,altura);
}
}
});
}
passquant = rdm.nextInt(9);
}
}
public static void main(String[]args){
Passaro pass = new Passaro();
}
}
`