title: How do I call KeyListener and use KeyEvent?
body: <p>I am trying to design a simple box that moves around on the screen.  I intend to paint it, then when ever I press an arrow key it will change its position and then repaint it.  It will keep doing this until it reaches the outer borders, then the code will stop.  But I do not know how to create a KeyListener to check for a keytyped.  There may be a better way to do this than what I am trying to do, any help would be greatly appreciated.</p>
  
  <p>Okay thank you those ideas do help me, but i am also having an issue with the same code... I do not know how to call make a KeyEvent to call the method check if the arrow keys are pressed.  Like writing the code in to move the character would not be too hard, but how would I call the method? I need a keyEvent as a parameter but I do not know how to call that.  I mewant to put this in my question before but I forgot, I am sorry.</p>
  
  <p>main class:</p>
  
  <pre><code>import javax.swing.JFrame;
  import java.awt.Graphics;
  import javax.swing.JPanel;
  import java.awt.Color;
  import javax.swing.JLabel;
  import javax.swing.ImageIcon;
  import java.awt.BorderLayout; 
  import java.awt.Canvas;
  //import java.awt.event.KeyEvent;
  import java.awt.event.*;
  
  public class CharacterTest extends JFrame {
  
      /**
       * Creates a new instance of &lt;code&gt;CharacterTest&lt;/code&gt;.
       */
      public CharacterTest() 
      {
          super("Character Test");            
          setSize(800, 800);                  //create the window         
          MCharacter C = new MCharacter();    //call the box so that it can be affected           
          getContentPane().add(C);            
          setVisible(true);                   //show the window
  
          /*
           Here I need to create a while loop using the determine method (while determine is false check for keytyped in MCharacter 
           so that it keeps checking for a key.
           I need to create a keyListener within the while loop and then depending on what key is pressed it will move.
           */
  
           while(C.determine(C.getX(), C.getY()) == false)
           {
              //if up arrow key pressed, C.setY(C.getY()-2);
              //if down arrow key pressed, C.setY(C.getY()+2);
              //if right arrow key pressed, C.setX(C.getX()+2);
              //if left arrow key pressed, C.setX(C.getX()-2);
           }
      }
  
      public void Movement(KeyEvent key)
      {
  
      }
  
      public static void main(String[] args) {
          // TODO code application logic here
          CharacterTest test = new CharacterTest();
      }
  }
  </code></pre>
  
  <p>MCharacter class:</p>
  
  <pre><code>    import javax.swing.JFrame;
      import java.awt.Graphics;
      import javax.swing.JPanel;
      import java.awt.Color;
      import javax.swing.JLabel;
      import javax.swing.ImageIcon;
      import java.awt.BorderLayout; 
      import java.awt.Canvas;
      //import java.awt.event.KeyEvent;
      import java.awt.event.*;
  
      public class MCharacter extends Canvas {
  
      //these will be the instance variables for the character's parameters- its size and its location
      private int width;
      private int height;
      private int x;
      private int y;
  
      //some constructors that would easily be called
      public MCharacter() 
      {
          setBackground(Color.WHITE);
          setWidth(10);
          setHeight(10);
          setX(400);
          setY(400);
      }
  
      public MCharacter(int wth, int hgt)
      {
          setWidth(wth);
          setHeight(hgt);
          setX(400);
          setY(400);
      }
  
      public MCharacter(int wth, int hgt, int xPos, int yPos)
      {
          setWidth(wth);
          setHeight(hgt);
          setX(xPos);
          setY(yPos);
      }
  
      //setters for each of the variables
      public void setWidth(int wth)
      {
          width = wth;
      }
  
      public void setHeight(int hgt)
      {
          height = hgt;
      }
  
      public void setX(int xPos)
      {
          x = xPos;
      }
  
      public void setY(int yPos)
      {
          y = yPos;
      }
  
      //getters for each of the varaibles
      public int getWidth()
      {
          return width;
      }
  
      public int getHeight()
      {
          return height;
      }
  
      public int getX()
      {
          return x;
      }
  
      public int getY()
      {
          return y;
      }
  
      //I am going to call the paint method here and create a small box that I will use as the character
      public void paint(Graphics window)
      {
          window.setColor(Color.BLUE);
          window.fillRect(x, y, width, height);
      }
  
      //this method will be used to keep checking for a key pressed: while this is false check for a keytyped
      public boolean determine(int x, int y)
      {
          if( x &gt;= 10 &amp;&amp; x &lt;= 790 &amp;&amp; y &gt;= 10 &amp;&amp; y &lt;= 790)
          {
              return false;
          }
          return true;
      }
  }
  </code></pre>