Salve ho realizzato un'interfaccia grafica di un gioco che ha dei giocatori che si muovono in modo casuale in un campo, ad ogni mossa devono aggiornare il loro punteggio visualizzato sull'interfaccia grafica.Utilizzo la libreria SWT e asyncExec per permettere ai Thread secondari rappresentanti i giocatori di poter accedere hai widget dell'interfaccia...ho capito come funziona asyncExec però in questa applicazione ho bisogno del metodo handleEvent per disegnare il contesto grafico sul quale si muovono i giocatori....il codice del metodo è il seguente:
codice:
public void handleEvent(Event event) {
if (imgArena != null) {
if (event.type == SWT.Resize) {
imgArena.dispose();
gcArena.dispose();
imgArena = new Image(display, canvas.getClientArea());
gcArena = new GC(imgArena);
canvas.redraw();
} else {
ImageData id = paintLab();
if (id != null)
event.gc.drawImage(imgArena, 0, 0);
}}}
public void progressReceived(Event x) {
if (!display.isDisposed())
display.syncExec(new Runnable() {
public void run() {
canvas.redraw();
}
});}
Il problema è che asyncExec non aggiorna il punteggio sull'interfaccia...se però elimino il corpo di HandleEvent allora funziona viene visualizzato il punteggio aggiornato di volta in volta..la mia domanda è perche accade questo?????
Grazie anticipatamente per ogni risposta