This week's book giveaway is in the OCAJP forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide 1Z0-808 and have Jeanne Boyarsky & Scott Selikoff 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.