P.S.2: Painter.this.repaint(); // brrr
non è più chiaro [this.]repaint(); ?
No, e' orrendo in entrmbi i casi basterebbe repaint();
Ma questo programma serve solo da esempio, a scopo didattico... quindi non mi pare il caso di soffermarsi su questi dettagli.