Anche se hai già risolto rispondo al tuo primo quesito.
Il colore di sfondo può essere cambiato a runtime, nel caso il metodo non funzioni è perchè bisogna richiamare il metodo paint().