5

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

KeyListener listener = new KeyListener();

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

ありがとう、

トメク

4

3 に答える 3

9

KeyListenerはインターフェースです。何かによって実装する必要があります。したがって、次のことができます。

KeyListener listener = new SomeKeyListenerImplementation();

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

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

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

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

基本的に何をしたいかによります。

于 2008-11-13T09:24:52.263 に答える
5

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

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

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

于 2008-11-13T16:54:28.170 に答える
1

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

于 2008-11-13T09:25:58.440 に答える