import javax.swing.*;  
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;

public class KeypressDemo {
	public static void main(String [] args){
		JFrame j=new JFrame();
		j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		j.getContentPane().add(new KeypressPanel(), BorderLayout.CENTER);
		j.setSize(200,200);
		//j.pack();
		j.setVisible(true);
	}
}

class KeypressPanel extends JPanel implements KeyListener {

	int x,y; // The current position of the ball
	
	public KeypressPanel(){
		setBackground(Color.black);
		x=100; y=100;
		addKeyListener(this);
	}
	
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		g.setColor(Color.white);
		g.fillOval(x,y, 10, 10);
		requestFocus();
	}

	// To fulfill our obligations as a KeyListener, we implement the following...
	public void keyPressed(KeyEvent e){ }
	public void keyReleased(KeyEvent e){ }
	public void keyTyped(KeyEvent e){ 
		switch(e.getKeyChar()){
			case 'o': y=y-1; break;
			case 'k': x=x-1; break;
			case ';': x=x+1; break;
			case '.': y=y+1; break;
			default:
		}
		repaint(); // What happens if we leave this out?
	}
}
