Pregunta

Estoy intentando crear un Key Listener en Java, pero cuando lo intento

KeyListener listener = new KeyListener();

Netbeans me dice que KeyListener es abstracto; no se puede instanciar. Sé que me falta otra pieza de este oyente clave, pero como es la primera vez que uso un oyente clave, no estoy seguro de qué más necesito. ¿Por qué me dice esto?

Gracias,

Tomek

¿Fue útil?

Solución

KeyListener es una interfaz: debe ser implementada por algo. Entonces podrías hacer:

KeyListener listener = new SomeKeyListenerImplementation();

pero no puedes crear una instancia directamente. podría utilizar una clase interna anónima:

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

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

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

Depende de lo que quieras hacer, básicamente.

Otros consejos

KeyListener es una interfaz, por lo que debe escribir una clase que la implemente para usarla. Como Jon sugirió, podría crear una clase anónima que la implemente en línea, pero hay una clase llamada KeyAdapter que es una clase abstracta que implementa KeyListener, con métodos vacíos para cada método de interfaz. Si subclasifica KeyAdapter, solo necesita anular los métodos que le interesan, no todos los métodos. Por lo tanto, si solo le importaba keyPressed, podría hacer esto

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

Esto podría ahorrarle un poco de trabajo.

KeyListener es una interfaz, lo que significa que puede escribir una clase basada en ella e implementar sus funciones. Quizás este tutorial ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top