This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Your program is actually drawing more than the 4 dots its just that they are on top each other as you are repeatedly drawing at the same locations. I think what you are trying to do in your case statement is move x and y positions but are instead just using the same offsets.
Instead of g.fillOval( x-3, y+30, side, side ); try g.fillOval( x-=3, y+=30, side, side );
-= & += will decrement and increment the values accordingly.