我在写一个简单的类似Java的蛇类游戏,甚至在我真正开始制作游戏之前就遇到了一个问题。由于某种原因,我似乎无法从键盘获得输入。我当前的代码是:
public class GameWindow extends JFrame{
private SnakeCanvas snakeCanvas;
public GameWindow(StartWindow sw) {
getContentPane().addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
JOptionPane.showMessageDialog(null, "Key Pressed!");
}
});
getContentPane().setBackground(Color.BLACK);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setUndecorated(true);
this.setVisible(true);
getContentPane().setLayout(null);
snakeCanvas = new SnakeCanvas();
snakeCanvas.setBounds(78, 72, 290, 195);
getContentPane().add(snakeCanvas);
snakeCanvas.setVisible(true);
snakeCanvas.repaint();
}
}
(SnakeCanvas扩展了JPanel,并且上面没有其他组件)
我也尝试过将一个关键侦听器添加到snakeCanvas上,但仍然没有效果。
我也尝试过使用可聚焦和聚焦遍历的东西,但这也没有做任何事情...
谁能告诉我我在做什么错?
最佳答案
确保已将要接收键盘事件的组件设置为可聚焦(setFocusable
)和可聚焦(requestFocus
)