Because they're two different classes, and that's how their equals() methods are implemented. Would you want a JButton labelled "OK" and a JRadioButton labelled "OK" to compare equal?
Hmmm, that makes sense. I would'nt want JButton and JRadioButton to compare equal. However, one would expect the wrapper classes to exhibit same sort of behaviour as the primitives, well thats obviously not the case as you explained above.
For example, the following code prints equals:
How can i get the above effect using wrapper classes?