Bueno cada control debería de implementar una interfaz clickeable que permita recibir el evento click. Adicionalmente deberían todos los ...

Jherom Chacon

Jherom Chacon

Pregunta
student
hace 7 años

Bueno cada control debería de implementar una interfaz clickeable que permita recibir el evento click. Adicionalmente deberían todos los controles de implementar el método click de dicha interfaz para ejecutar código cuándo el evento sea recibido sobre el botón.

Con Interfaces funcionales se me ocurre algo cómo esto:
@FunctionalInterface
public interface Clickable{
public void click(Button mouseButton);
}

public class UiImage extends UiControl implements Clickable{
@Override
public void click(Button mouseButton){
if(mouseButton.left)
//DoSomething
else
//DoAnotherStuff
}
}

Aunque con lambdas no me queda del todo claro porque entiendo que estas se utilizan de manera única en el momento, por lo que tengo la impresión de que deberíamos de crear una lambda para esta funcion en cada control, lo que nos lleva a un problema de reutilización.

¿Ustedes que opinan?

1 respuestas
    Angel Ivan Carrillo  de Leon

    Angel Ivan Carrillo de Leon

    student
    hace 7 años

    Bueno a lo que aprendí, lo único que le falto a tu código es implementar las lambdas.
    Tienes esta interfaz que definiste…

    @FunctionalInterface public interface Clickable{ public void click(Button mouseButton); }

    Y despues tienes este código…

    public class UiImage extends UiControl implements Clickable{ @Override public void click(Button mouseButton){ if(mouseButton.left) //DoSomething else //DoAnotherStuff } }

    Por lo que nos enseño Ann lo que tienes que hacer es lo siguiente …

    public class UiImage extends UiControl implements Clickable{ Clickable cl = (Button mouseButton) -> { if(mouseButton.left) //DoSomething else //DoSomething } cl.click(mouseButton); }

    Aunque en tu clase donde esta el metodo main te falto declarar la instancia de tu interface. Por lo que ví en la clase anterior.

Curso Avanzado de Java SE

Curso Avanzado de Java SE

Explora programación avanzada en Java SE centrándote en la programación orientada a objetos, lambdas, y manejo de excepciones. Aprende a usar JDBC para acceder a bases de datos, aplicando técnicas modernas y eficientes para gestión de datos.

Curso Avanzado de Java SE
Curso Avanzado de Java SE

Curso Avanzado de Java SE

Explora programación avanzada en Java SE centrándote en la programación orientada a objetos, lambdas, y manejo de excepciones. Aprende a usar JDBC para acceder a bases de datos, aplicando técnicas modernas y eficientes para gestión de datos.