Come design non è proprio il massimo, comunque l'idea è quella: separare la gestione dell'input da ciò che è grafica.
Tieni presente che l'interazione dei thread custom con la grafica (painting e accesso ai componenti) è piuttosto critica e deve seguire determinate regole (fai una ricerca in merito ad EDT [Event Dispatch Thread] e i metodi invokeLater e invokeAndWait di SwingUtilities).

Ricordo, inoltre, le regole di nomenclatura Java a cui tutti si dovrebbero uniformare:

1) I nomi delle classi e delle interfacce vanno scritti con l'iniziale Maiuscola e seguire la notazione camel-case (cioè ogni iniziale di parola va maiuscola, ec: LanciaProgramma)

2) I nomi dei metodi e delle variabili vanno scritti con l'iniziale minuscola e seguire la notazione camel-case (es: cambiaColore() )

3) I nomi delle costanti (membri static final) vanno scritti con tutte le lettere MAIUSCOLE (es: MAX_OGGETTI)


Ciao.