Scala using Java libraries, taking advantage of lambda expressions support in Java 8

前端 未结 2 402
无人共我
无人共我 2021-02-01 20:12

According to: http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#lambda-expressions-in-gui-applications

Previously:

btn.setOnActio         


        
2条回答
  •  走了就别回头了
    2021-02-01 21:10

    One way to achieve this is using implicit transformations what you need to do is to create a new Object that handles all this transformations, something like this:

    import javafx.scene.input.MouseEvent
    import javafx.event.EventHandler
    
    object FXEvent2HandlerImplicits{
      implicit def mouseEvent2EventHandler(event:(MouseEvent)=>Unit) = new EventHandler[MouseEvent]{
        override def handle(dEvent:MouseEvent):Unit = event(dEvent)
      }
    }
    

    Then just import it in any file that you may need the transformation:

    import FXEvent2HandlerImplicits._   
    //From now on within scope you can now call events like Java8 Lambdas
    chart.setOnMouseClicked( (e: MouseEvent) => println("Noice") )
    

    This is just Syntactic sugar to archive the same thing in a more elegant way

提交回复
热议问题