farrell2k
June 20th, 2008, 02:54 AM
Does anyone know why my app is not responding properly to key presses?
Thank you.
package game;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Game extends JPanel
{
int up = 0, down = 1, left = 2, right = 3, still = 4;
int p1Direction;
int speed;
Rectangle p1 = new Rectangle(100,100,30,30);
public Game()
{
//start Thread
MoveP1 moveP1 = new MoveP1();
moveP1.start();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.red);
g.fillRect(p1.x,p1.y,p1.width,p1.height);
}
public class MoveP1 extends Thread implements KeyListener
{
public void run()
{
addKeyListener(this);
while(true)
{
repaint();
try
{
if (p1Direction == down)
{
p1.y++;
System.out.println(p1.x + " " + p1.y);
}
Thread.sleep(60);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void keyTyped(KeyEvent event)
{
}
public void keyPressed(KeyEvent event)
{
if (event.getKeyChar() == 's')
{
p1Direction = down;
System.out.println("You are pressing s.");
}
}
public void keyReleased(KeyEvent event)
{
}
}
public static void main (String[]args)
{
Game game1 = new Game();
JFrame frame = new JFrame("game test");
frame.setSize(800,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
frame.getContentPane().add(game1);
frame.setVisible(true);
}
}
Thank you.
package game;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Game extends JPanel
{
int up = 0, down = 1, left = 2, right = 3, still = 4;
int p1Direction;
int speed;
Rectangle p1 = new Rectangle(100,100,30,30);
public Game()
{
//start Thread
MoveP1 moveP1 = new MoveP1();
moveP1.start();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.red);
g.fillRect(p1.x,p1.y,p1.width,p1.height);
}
public class MoveP1 extends Thread implements KeyListener
{
public void run()
{
addKeyListener(this);
while(true)
{
repaint();
try
{
if (p1Direction == down)
{
p1.y++;
System.out.println(p1.x + " " + p1.y);
}
Thread.sleep(60);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void keyTyped(KeyEvent event)
{
}
public void keyPressed(KeyEvent event)
{
if (event.getKeyChar() == 's')
{
p1Direction = down;
System.out.println("You are pressing s.");
}
}
public void keyReleased(KeyEvent event)
{
}
}
public static void main (String[]args)
{
Game game1 = new Game();
JFrame frame = new JFrame("game test");
frame.setSize(800,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
frame.getContentPane().add(game1);
frame.setVisible(true);
}
}