I cannot get the rectangle to move right or left using the KeyListener. Can you help me ? Here's the code. I don't really get the paint function, it's kinda strange.


Code:
package gamepackage;

import java.applet.Applet;
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.Graphics;

public class StartingClass extends Applet implements Runnable,KeyListener {
	
	public int x=0,y=200;
	private Graphics second;


	@Override
	public void destroy() {
		
	}

	@Override
	public void init() {
		setSize(800,480);
		setBackground(Color.BLACK);
		setFocusable(true);
		Frame frame = (Frame) this.getParent().getParent();
		frame.setTitle("Java Game");
		addKeyListener(this);
	}

	@Override
	public void start() {
		Thread thread1 = new Thread(this);
		thread1.start();
	
	}

	@Override
	public void stop() {
		
	}

	@Override
	public void run() {
		while (true)
		{
			repaint();
			try {
				Thread.sleep(17);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	@Override
	public void keyPressed(KeyEvent e) {
		switch(e.getKeyCode())
		{
		case KeyEvent.VK_W:
			System.out.println("up");
			break;
		case KeyEvent.VK_S:
			System.out.println("down");
			break;
		case KeyEvent.VK_A:
			x-=5;
			System.out.println(x);
			break;
		case KeyEvent.VK_D:
			x+=5;
			System.out.println(x);
			break;
		case KeyEvent.VK_ESCAPE:
			break;
			
		}
	}

	@Override
	public void keyReleased(KeyEvent e) {
		switch(e.getKeyCode())
		{
		case KeyEvent.VK_W:
			System.out.println("stopup");
			break;
		case KeyEvent.VK_S:
			System.out.println("stopdown");
			break;
		case KeyEvent.VK_A:
			System.out.println("stopleft");
			break;
		case KeyEvent.VK_D:
			System.out.println("stopright");
			break;
			
		}
	}

	@Override
	public void keyTyped(KeyEvent e) {
		
	}
	
	@Override
	public void paint(Graphics second) {
		second.setColor(Color.WHITE);
		second.fillRect(x, y, 50, 50);
		System.out.println("drawing");
	}
	@Override
	public void update(Graphics g) {
		
		
	}

}