1

私は単純な 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に追加しようとしましたが、まだ効果がありません.フォーカス可能なものとフォーカストラバーサルのもので遊んでみましたが、それも何もしませんでした...誰か私に説明してください私が間違っていることは何ですか?

4

2 に答える 2

3

キーボード イベントを受け取りたいコンポーネントがフォーカス可能 ( setFocusable) &フォーカスあり ( requestFocus)に設定されていることを確認してください。

于 2012-08-03T10:17:11.377 に答える
2
  1. KeyListenerはSwing JComponentsの適切なリスナーではありません。ウィンドウにフォーカスする必要があります

  2. あなたはsetFocusableコンテナのために必要です

  3. 正しくて正しい方法は、KeyBindingsの 使用です。たとえば

于 2012-08-03T10:16:33.493 に答える