KeyListener in Java è astratto; non può essere istanziato?
-
08-07-2019 - |
Domanda
Sto provando a creare un Key Listener in Java, comunque quando provo
KeyListener listener = new KeyListener();
Netbeans mi sta dicendo che KeyListener è astratto, non può essere istanziato. So che mi manca qualche altro pezzo di questo listener di chiavi, ma dato che questa è la prima volta che utilizzo un listener di chiavi non sono sicuro di cos'altro ho bisogno. Perché mi sta dicendo questo?
Grazie,
Tomek
Soluzione
KeyListener
è un'interfaccia - deve essere implementata da qualcosa. Quindi potresti fare:
KeyListener listener = new SomeKeyListenerImplementation();
ma non puoi istanziarlo direttamente. potresti utilizzare una classe interna anonima:
KeyListener listener = new KeyListener()
{
public void keyPressed(KeyEvent e) { /* ... */ }
public void keyReleased(KeyEvent e) { /* ... */ }
public void keyTyped(KeyEvent e) { /* ... */ }
};
Dipende da cosa vuoi fare, in sostanza.
Altri suggerimenti
KeyListener è un'interfaccia, quindi è necessario scrivere una classe che la implementa per usarla. Come ha suggerito Jon, potresti creare una classe anonima che la implementa in linea, ma esiste una classe chiamata KeyAdapter che è una classe astratta che implementa KeyListener, con metodi vuoti per ciascun metodo di interfaccia. Se esegui la sottoclasse di KeyAdapter, devi solo sovrascrivere i metodi che ti interessano, non tutti i metodi. Pertanto, se ti importasse solo di KeyPress, potresti farlo
KeyListener listener = new KeyAdapter()
{
public void keyPressed(KeyEvent e) { /* ... */ }
};
Questo potrebbe farti risparmiare un po 'di lavoro.
KeyListener è un'interfaccia, il che significa che puoi scrivere una classe basata su di essa e implementare le sue funzioni. Forse questo tutorial aiuta.