import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class KodKlaw extends Applet
{
	private class Pole extends Canvas
	{
		private final int ROZM = 15;
		private int x, y;

		public void wLewo ()
		{
			if (x>0)
			{
				x--;
				repaint();
			}
		}
		public void wPrawo ()
		{
			if (x<getWidth()-1)
			{
				x++;
				repaint();
			}
		}
		public void wGore ()
		{
			if (y>0)
			{
				y--;
				repaint();
			}
		}
		public void wDol ()
		{
			if (y<getHeight()-1)
			{
				y++;
				repaint();
			}
		}

		public void paint (Graphics gr)
		{
			gr.setColor(getBackground());
			gr.fillRect(x-ROZM-1,y-ROZM-1,ROZM*2+3,ROZM*2+3);
			gr.setColor(Color.BLUE);
			gr.drawRect(0,0,getWidth()-1,getHeight()-1);
			gr.setColor(Color.RED);
			gr.drawLine(x-ROZM,y,x+ROZM,y);
			gr.drawLine(x,y-ROZM,x,y+ROZM);
		}
		public void update (Graphics gr)
		{
			paint(gr);
		}
	}

	Pole pole = new Pole();
	Label opis = new Label(" ");

	private class ZdKlaw extends KeyAdapter
	{
		public void keyPressed (KeyEvent ev)
		{
			if (ev.getKeyCode()==KeyEvent.VK_LEFT) pole.wLewo();
			if (ev.getKeyCode()==KeyEvent.VK_RIGHT) pole.wPrawo();
			opis.setText(" ");
		}
		public void keyReleased (KeyEvent ev)
		{
			if (ev.getKeyCode()==KeyEvent.VK_UP) pole.wGore();
			if (ev.getKeyCode()==KeyEvent.VK_DOWN) pole.wDol();
		}
		public void keyTyped (KeyEvent ev)
		{
			char zn = ev.getKeyChar();
			int kod = (int)zn;
			if (kod<32) opis.setText("znak wpisany z klawiatury: \'"+zn+"\'");
			else opis.setText("znak wpisany z klawiatury: ["+kod+"]");
		}
	}

	public void init ()
	{
		setLayout(new BorderLayout());
		add(pole,BorderLayout.CENTER);
		add(opis,BorderLayout.SOUTH);
		pole.addKeyListener(new ZdKlaw());
	}
	public void start ()
	{
		pole.requestFocus();
	}
}
