質問

Javaでキーリスナーを作成しようとしていますが、試してみたときに

KeyListener listener = new KeyListener();

Netbeansは、KeyListenerが抽象的であり、インスタンス化できないことを教えてくれます。私はこのキーリスナーの他の部分を見逃していることを知っていますが、キーリスナーを使用するのはこれが初めてなので、他に何が必要かわかりません。なぜこれが私に言っているのですか?

ありがとう、

Tomek

役に立ちましたか?

解決

KeyListener はインターフェースです-何かによって実装する必要があります。だからあなたはできる:

KeyListener listener = new SomeKeyListenerImplementation();

ただし、直接インスタンス化することはできません。匿名の内部クラスを使用する ことができます:

KeyListener listener = new KeyListener()
{
    public void keyPressed(KeyEvent e) { /* ... */ }

    public void keyReleased(KeyEvent e) { /* ... */ }

    public void keyTyped(KeyEvent e) { /* ... */ }
};

基本的には何をしたいかによって異なります。

他のヒント

KeyListenerはインターフェイスであるため、使用するには、それを実装するクラスを作成する必要があります。 Jonが提案したように、インラインで実装する匿名クラスを作成できますが、KeyListenerを実装する抽象クラスであるKeyAdapterというクラスがあり、各インターフェイスメソッドに空のメソッドがあります。 KeyAdapterをサブクラス化する場合、オーバーライドする必要があるのは、すべてのメソッドではなく、重要なメソッドのみです。したがって、keyPressedだけに関心がある場合は、これを行うことができます

KeyListener listener = new KeyAdapter()
{
    public void keyPressed(KeyEvent e) { /* ... */ }
};

これにより、作業が少し節約できます。

KeyListenerはインターフェイスです。つまり、それに基づいてクラスを記述し、その機能を実装できます。おそらくこれはチュートリアルに役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top