JavaのKeyListenerは抽象的です。インスタンス化できませんか?
-
08-07-2019 - |
質問
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はインターフェイスです。つまり、それに基づいてクラスを記述し、その機能を実装できます。おそらくこれはチュートリアルに役立ちます。
所属していません StackOverflow