2

これはちょっと変わった質問ですが、聞いてみる価値はあります: キー リスナー、キー バインディング、キー ディスパッチャなどを使用せずに Java でキー イベントを一般的に取得する方法はありますか? ここでの目標は、オーバーロードされたクラス (例: new KeyListener() { ... }) を使用しないことです。

シンプルなゲームをどれだけ小さくできるかを試していますが、オーバーロードされたクラスを使用すると、通常のコードに比べてかなりのスペースが必要になります。これは、jar にパッケージ化されたときに独自のクラス ファイル全体が必要になるためです。

4

1 に答える 1

6
  1. 道はない。

  2. 個別のソース ファイルを避けたい場合は、匿名 (または名前付き) 内部クラスを使用できます。実際、匿名の内部クラスは、単純なリスナーまたはアダプターに使用するのが非常に一般的です。メイン ロジック クラスに KeyListener を実装することもできますが、これは少し珍しいことですが、状況によって異なります。

    void example () {
    
        JComponent component = ...;
    
        component.addKeyListener(new KeyAdapter() {
            @Override public void keyPressed (KeyEvent e) {
                // do stuff
            }
        });
    
    }
    

    匿名クラスのチュートリアルを参照してください。

  3. JAR は圧縮されており、ここでは数百バイトのオーダーで話しています。

于 2013-08-16T18:46:26.903 に答える