I am running a simple game of Pong. The game begins when the user presses the spacebar. Works great in Windows XP, but then gets all weird in Windows 7. If you press the spacebar, then click the game window, it runs. If you click first, then hit space, nothing. I have pasted the main class below.
public class Game extends JPanel {
static final int FW = 400;
static final int FH = 300;
Ball ball = new Ball(this);
Paddle paddleL = new Paddle(this);
PaddleAI paddleR = new PaddleAI(this);
public static boolean go;
static KeyListener key;
public Game(){
setFocusable(true);
addKeyListener(key = new KeyListener(){
@Override
public void keyTyped(KeyEvent e){
}
@Override
public void keyReleased(KeyEvent e){
paddleL.keyReleased(e);
if(e.getKeyCode() == KeyEvent.VK_SPACE)
go = true;
}
@Override
public void keyPressed(KeyEvent e){
paddleL.keyPressed(e);
if(e.getKeyCode()==KeyEvent.VK_SPACE)
go = true;
}
});
}
void setup(){
ball.setup();
paddleL.setup();
paddleR.setup();
}
void move(){
ball.move();
paddleL.move();
paddleR.move();
}
public void paint(Graphics g){
super.paint(g);
ball.paint(g);
paddleL.paint(g);
paddleR.paint(g);
}
public static void main(String[] args) throws InterruptedException{
//final int FW = 400;
// final int FH = 300;
JFrame frame = new JFrame();
Game game = new Game();
game.setBackground(Color.black);
frame.add(game);
frame.getContentPane().setBackground(Color.cyan);
frame.setBackground(Color.black);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(FW, FH);
frame.setLocationRelativeTo(null);
frame.setTitle("Pong");
frame.setResizable(true);
frame.setVisible(true);
game.setup();
while(true){
if(go){
game.move();
game.repaint();
Thread.sleep(10);
}
}
}
}