Olá, eu estou precisando de ajuda, eu criei um projeto e no inicio com o seguinte objetivo: Criar uma janela, e infinitamente fazer com que jlabels (no máximo 9 por vez) fossem criadas de um lado aleatório da janela e se movesse até o outro, na posição y aleatória de acordo com a altura da janela, e quando chegasse ao outro lado a jlabel fosse destruída e assim várias jlabels ficariam andando pela tela. Porém passei o dia todo tentando fazer isso, más acabei me perdendo nos códigos e não cheguei a lugar nenhum, alguém pode me ajudar?
Meus códigos são esses, talvez ajude vocês a entenderem o que que eu quero fazer:
Classe Movepassaros
`
package Pacote;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Movepassaros extends JFrame{
public ImageIcon img = new ImageIcon(getClass().getResource("/Assets/pássaro.gif"));
public static Random rdm = new Random();
public static int passquant = 0;
public static boolean bo = false;
public static int posi = 0;
Movepassaros(){
this.setTitle("Movendo os passaros");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
mover m = new mover();
}
public static void main(String[]args){
new Movepassaros();
}
}
`
Classe mover
`
package Pacote;
import javax.swing.JLabel;
public class mover extends Thread{
public void run(){
while(true){
Movepassaros.passquant = Movepassaros.rdm.nextInt(8);
for(int i = 0; i<=Movepassaros.passquant; ++i){
mov m = new mov();
}
}
}
}`
Classe mov
`
package Pacote;
import javax.swing.JLabel;
public class mov extends Thread{
public void run(){
int altura = new Movepassaros().getHeight();
int largura = new Movepassaros().getWidth();
Movepassaros.bo = Movepassaros.rdm.nextBoolean();
if(Movepassaros.bo==true){
int x = 0;
JLabel l = new JLabel(new Movepassaros().img);
int bound = Movepassaros.rdm.nextInt(altura);
l.setLocation(0,bound);
while(x<=largura){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
x+=1;
l.setLocation(x,bound);
}
}else if(Movepassaros.bo==false){
int x = 0;
JLabel l = new JLabel(new Movepassaros().img);
int bound = Movepassaros.rdm.nextInt(altura);
l.setLocation(largura,bound);
while(x!=0){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
x-=1;
l.setLocation(x,bound);
}
}
}
}
`