You can't really override 'paint' in the basic AWT controls and still have them work right, because in Button, for instance, much of the painting behavior is done by the peer classes (a WButton in Windows, for instance). I wrote many of the AWT controls for the OS/2 JVM way back in 1.1.x, and I can't imagine this working the way you want it to unless things have changed dramatically with the AWT (unlikely).
If you want to really control painting in situations like this, you need to either roll your own or go with a Swing button and then explore the "UI component" (the delegate object responsible for painting the control among other things - part of the "look and feel" being used at the time).
Basically, the AWT controls are 'native' - i.e. there's a real Windows button there and some java code wrapped around it. The Swing controls are 'pure java'; but delegate much of their behavior and almost all of their appearance to the UI controllers in the look-and-feel packages.