4

複数のキーの押下をキャッチするには、ディスパッチャー クラスをどのように変更すればよいですか? とりあえず印刷したいのですが…

class MyDispatcher implements KeyEventDispatcher {
public boolean dispatchKeyEvent(KeyEvent e) {

if (e.getID() == KeyEvent.KEY_PRESSED) {
   System.out.println(e.getKeyChar());

} 

return false;
}
}
4

2 に答える 2

4

私は私の問題を解決しました:

class MyDispatcher implements KeyEventDispatcher {
ArrayList<String>typedKeys = new ArrayList<String>();
public boolean dispatchKeyEvent(KeyEvent e) {

if (e.getID() == KeyEvent.KEY_PRESSED) 
    typedKeys.add(""+e.getKeyChar());

if (e.getID() == KeyEvent.KEY_RELEASED) {
    String str = typedKeys+"";
    System.out.println(str.substring(1,str.length()-1).replaceAll(", ",""));
    typedKeys.clear();
 } 

return false;
}

}
于 2012-09-02T15:18:05.067 に答える
3

ユーザーが入力した場合N+J、私は印刷したいNJ

と を同時に押すNと、次から次へと到着します。1 つのアプローチは、これに似たもの作成することです。を使用して、 を作成します。イベントが到着すると、現在押されているキーと新しいキーを含むように更新します。イベントが到着したら、更新して新しいイベントを除外します。このメソッドにより、ゲームで使用される事前定義されたキー ステートとの比較が可能になります。インスタンスは不変ですが、合理的な数のキーに対して効率的に小さいことに注意してください。JKeyEventenum KeyEnumSetSet currentKEY_PRESSEDcurrentKEY_RELEASEDcurrentcurrent.equals()EnumSet

于 2012-09-02T14:33:30.330 に答える