Duda con interfaz Listener (MouseListener)

Iniciado por JonaLamper, 6 Abril 2015, 11:48 AM

0 Miembros y 1 Visitante están viendo este tema.

JonaLamper

Buenos días,




Como vemos, tengo dos botones (a1 y a2) los cuales implementan distintas interfaces. El botón a1 implementa ActionListener y el botón a2 implementa MouseListener.

El botón a1 implementa el único método de la interfaz ActionListener, es decir, el método actionPerformed. Ahora bien, cuando voy a usar la interfaz MouseListener, solo quiero utilizar el método mousePressed, pero debo declarar todos los demás métodos (pues estoy implementando una interfaz).

El problema es que queda feísimo el código, porque aparecen 4 métodos que no uso para nada. ¿Se puede hacer algún apaño para que no quede tan feo?
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

Usuario Invitado

#1
Una interface es un contrato y describe el comportamiento que debe tener las clases que la implementen. Por lo que, al hacer eso te ves obligado a sobreescribir esos métodos porque en esencia esa clase es la misma interface pero mostrando su implementación.

Lo que puedes hacer es hacer que una clase abstracta la implemente:

Código (java) [Seleccionar]

public abstract class AbstractMouseListener implements MouseListener {

   // todos los metodos de MouseListener
}


Y tu controlador hereda de la clase abstracta:

Código (java) [Seleccionar]

public class SomeController extends AbstractMouseListener {
   private SomeGUI gui;

   public SomeController(SomeGUI gui) {
       this.gui = gui;
   }
   @Override
   public void mousePressed(MouseEvent event) {
       // hacer algo
   }
}



Saludos.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein