2011-10-21 6 views
1

メソッドをアクティブにするためにキーイベントを使用するプログラムを作成しようとしています。このコードはWindowsマシン上で動作しますが、Macに移行すると「Spacebar」が押されても反応しません。私は、これは、使用されている異なるキーコードと関係があると思います。MacのJava KeyEvents

public void keyPressed(KeyEvent e) { 
    if (e.getKeyCode() == KeyEvent.VK_SPACE) { 
     System.out.println("SPACEBAR"); 
     grid.stepGame(); 

    } 
} 

どのように私はMacでこの作業を得ることができますか?

編集 - 問題は、以下の答えを使って解決されました。 - Macではフレームが自動的にフォーカスを取り戻すことはないようですので、なぜkeylistenerが動作しないのかは別のJComponentです。

答えて

4

あなたの特定の問題については不明ですが、キーリスナーの代わりにkey bindingsを使用すると、問題は消滅します。 Javaのチュートリアルサイトから :

注: 代わりにキーリスナーのキーバインディングを使用して、特定のキーに特別な反応を定義します。例えば

// Component that you want listening to your key 
JComponent component = ...; 
component.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), 
         "actionMapKey"); 
component.getActionMap().put("actionMapKey", 
         someAction); 
として