Hai ragione.
Allora ho Pannello2 che rappresenta il pannello della pallina da creare
Creo un array di pannelli che andrò ad aggiornare ogni volta che creo una pallina
Dopo di che creo un array di thread ognuno dei quali gestisce il movimento della pallina dell' indice corrispondente
codice:
private Pannello2[] pan;
public static Thread[] thread;
pan[0] = new Pannello2(new ImageIcon("C:/Users/ACER 10/Desktop/bolla.gif").getImage());
pan[0].setLocation(0,0);
this.add(pan[0]);
this.pan[0].DimEPos(0, 0, 120, 120);
//Ora il problema lo da nel momento in cui creo il thread[1] dal momento che la pallina pan[1] nn si muove
pan[1] = new Pannello2(new ImageIcon("C:/Users/ACER 10/Desktop/bolla.gif").getImage());
pan[1].setLocation(0,0);
this.add(pan[1]);
this.pan[1].DimEPos(0, 0, 120, 120);
this.thread[0] = new Thread(new MovimentoPallina(0));
this.thread[0].start();
this.thread[1] = new Thread(new MovimentoPallina(1));
this.thread[1].start();
private class MovimentoPallina implements Runnable {
private int direzioneO=Pannello2.DESTRA;
private int direzioneV= Pannello2.GIU;
private int pos;
public MovimentoPallina(int a){
pos=a;}
@Override
public synchronized void run() {
try {
while (true) {
int posizionePallina = pan[pos].getPosizioneX();
int posizionePallinaY = pan[pos].getPosizioneY();
int dimensionePallina = pan[pos].getDimensioneL();
int dimensionePallinaH = pan[pos].getDimensioneH();
if (posizionePallina + dimensionePallina >= LPannelloProva)
{posizionePallina=LPannelloProva+dimensionePallina;
direzioneO = pan[pos].SINISTRA;}
else if (posizionePallina <= 0)
direzioneO = pan[pos].DESTRA;
if (posizionePallinaY + dimensionePallinaH >= HPannelloProva-5)
{
posizionePallinaY = HPannelloProva-dimensionePallinaH-5;
pan[pos].incY=-(pan[pos].incY*0.97);
direzioneV= pan[pos].SU;
}
if (posizionePallinaY + dimensionePallinaH<= 50)
{
posizionePallinaY = HPannelloProva+dimensionePallinaH;
direzioneV = pan[pos].GIU;
}
if (direzioneO==pan[pos].DESTRA)
{pan[pos].muovi();
}
else if (direzioneO==pan[0].SINISTRA)
{pan[pos].muovi2();
}
repaint();
Thread.sleep(35);
}
} catch (InterruptedException ex) {
}
}