Even then, it wasn't really what I wanted.
ColorChange conformed to Java's EventObject interface, which mandated that getSource return an Object. I really wanted getSource to return a ColorChanger.
I could have done it in much less code and with better results if Java had templates.