これは非常に基本的なことを行ういくつかの基本的なコードです(連続的なwhileループを使用せずに):
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial")
public class Ellipses extends JFrame {
    public static void main(String[] args){
        //Ensures application is not run on the main thread 
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Ellipses myEllipses = new Ellipses();
                myEllipses.init();
            }
        });
    }
    public Ellipses(){
        //Set up the frame
        this.setTitle("Ellipses Example");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        this.setSize(400, 400);
    }
    private Ellipse ellipse1;
    public void init(){
        Container contentPane = this.getContentPane();
        //Create a new ellipse and add to the content pane
        ellipse1 = new Ellipse();
        contentPane.add(ellipse1);
        //Add the keyListener to the contentPane
        contentPane.addKeyListener(new KeyListener() {
            public void keyTyped(KeyEvent e) {}
            public void keyReleased(KeyEvent e) {}
            public void keyPressed(KeyEvent e) {
                if(e.getKeyCode() == KeyEvent.VK_UP){
                    ellipse1.decreaseY();
                }
                if(e.getKeyCode() == KeyEvent.VK_DOWN){
                    ellipse1.increaseY();
                }
                if(e.getKeyCode() == KeyEvent.VK_LEFT){
                    ellipse1.decreaseX();
                }
                if(e.getKeyCode() == KeyEvent.VK_RIGHT){
                    ellipse1.increaseX();
                }
                //Repaint the ellipse
                ellipse1.repaint();
            }
        });
        //Request the focus so key presses can be detected
        contentPane.setFocusable(true);
        contentPane.requestFocus();
    }
    //Create an ellipse which can be drawn to the screen
    public class Ellipse extends JComponent{
        private int x , y; //Coordinates of the oval
        public Ellipse(){
            setCoordinates(100, 100);
        }
        public void setCoordinates(int x, int y){
            this.x = x;
            this.y = y;
        }
        public void increaseY(){
            y+=10;
        }
        public void increaseX(){
            x+=10;
        }
        public void decreaseY(){
            y-=10;
        }
        public void decreaseX(){
            x-=10;
        }
        public void paint(Graphics g){
            //Ensures previous paint is cleared
            super.paintComponents(g);
            g.setColor(Color.RED);
            g.fillOval(x, y, 100, 100); 
        }
    }
}