Olá, eu gostaria neste 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{
static Random rdm = new Random();
static boolean bo = rdm.nextBoolean();
static int passquant = rdm.nextInt(9);
Passaro(){
setTitle("Título");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setExtendedState(JFrame.MAXIMIZED_BOTH);
}
public static void main(String[]args){
Passaro pass = new Passaro();
for(int i = 0; i<=passquant; ++i){
new Thread(new Runnable(){
public void run(){
Pass p = new Pass();
int x = pass.getWidth();
final int y = rdm.nextInt(pass.getHeight());
pass.add(p);
while(true){
x-=5;
p.setLocation(x,y);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
System.out.println("loop is running...");
passquant = rdm.nextInt(9);
bo = rdm.nextBoolean();
}
}
}
`
Fizesse com que as jlabels fossem adicionadas dentro de jframe na posição mais no canto possível (que possa ser visto), na posição y aleatória de acordo com a altura da janela e ele fosse aumentando a posição x infinitamente.
Obs: Eu gostaria de que fosse adicionadas mais de uma vez a label(no máximo 10)
Alguém sabe porque que a label é adicionada e depois do sleep ela desaparece, e porque ela só é adicionada uma vez, ao invés de muitas?
Eu consegui resolver, o código ficou assim
`
package Objects;
import java.awt.Component;
import java.awt.Image;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
public class Passaro extends JFrame{
Random rdm = new Random();
boolean bo;
int passquant;
public void remover(Component c){
this.remove(c);
}
Passaro(){
setTitle("Título");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setExtendedState(JFrame.MAXIMIZED_BOTH);
setLayout(null);
int width = this.getWidth();
passquant = rdm.nextInt(5);
while(true){
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.getHeight()),largura,altura);
this.add(p);
this.repaint();
new Thread(new Runnable(){
public void run(){
System.out.println("rund");
while(true){
if(p.getX()!=width){
p.setBounds(p.getX()+1,p.getY(),largura,altura);
}else if(p.getX()==width){
remover(p);
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}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.getHeight()),largura,altura);
this.add(p);
this.repaint();
new Thread(new Runnable(){
public void run(){
System.out.println("run");
while(true){
if(p.getX()!=width){
p.setBounds(p.getX()-1,p.getY(),largura,altura);
}else if(p.getX()==width){
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
try {
Thread.sleep(2300);
} catch (InterruptedException e) {
e.printStackTrace();
}
passquant = rdm.nextInt(5);
}
}
}
public static void main(String[]args){
Passaro pass = new Passaro();
}
}
`