Hi Barry,
The reason is that each GUI component (AWT or Swing) keeps track of its own parent, bounds, etc. Knowing this we can say that an object can only be in one place at one time.
The other reason is basic
Java. Method parameters are passed by value in Java. What does that mean? It means that when we pass the value 'button1' into the add method we are actually receiving a copy of the reference to button1. We are still pointing to the object button1. Therefore, using the above reasoning we can see why the button1 state (parent, bounds, etc.) is changed inside the add method. Using the same or another reference to the same object will again change the button1 state. Therefore, a single object can only be in one state (in one container) at a single time.
Long winded, but maybe effective?
Manfred.