[thread]modifier un composant graphique
Bonjour,
Je developpe actuellement une application qui permet a chaque clique d'un bouton d'afficher une ligne avec la classe GC.
Cependant je souhaite passer par les thread java car ensuite j'aimerai bien faire une animation graphique.
Voici le code de mon bouton, a chaque pression je lance 5 threads.
Code:
1 2 3 4 5 6 7 8 9 10
| zz.addListener(SWT.MouseUp, new Listener() {
public void handleEvent(Event event) {
for (int i = 10; i < 15; i++) {
Thread t1;
ThreadPacket ex1 = new ThreadPacket(i, null, c1);
t1 = new Thread(ex1);
t1.start();
}
}
}); |
Ensuite voici le code de ma classe thread :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public class ThreadPacket implements Runnable{
int number;
RGB colorRGB;
Composite parent;
public ThreadPacket(int i, RGB color, Composite parent) {
number = i;
colorRGB = color;
this.parent = parent;
}
public void run() {
parent.getDisplay().asyncExec(new Runnable() {
public void run() {
NettraceView.drawLines(number, null);
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
NettraceView.eraseLines(number);
}
});
}
} |
Je voudrais que les 5 threads se lance dans l'ordre et ensuite que chacun leur tour se finisse grace au thread.
Pour le moment, les thread se lancent un par un. Le suivant attendant que son predecesseur ai fini ses taches.
Pour etre plus precis, mes fonction drawLines et erasesLines sont static.
Code:
1 2 3 4 5
| public static void drawLines(int i, Color color) {
//canevas = variable globale static
GC gc = new GC(canevas);
//tracage de la ligne i
} |