Ранее:
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
Теперь мы можем:
btn.setOnAction(
event -> System.out.println("Hello World!")
);
Теперь я пытаюсь сделать это в Scala при использовании библиотеки Java.
Я использую JavaFX (который включен по умолчанию в Java 1.8 SE). Попробуйте:
chart.setOnMouseClicked( (e: MouseEvent) => println("Noice") )
Однако я получаю:
Error:(204, 46) type mismatch;
found : javafx.scene.input.MouseEvent => Unit
required: javafx.event.EventHandler[_ >: javafx.scene.input.MouseEvent]
chart.setOnMouseClicked( (e: MouseEvent) => println("Noice") )
^
Старый стиль отлично работает:
chart.setOnMouseClicked( new EventHandler[MouseEvent] {
override def handle(event: MouseEvent): Unit = println("NOT NOICE")
} )
Я установил уровень языка проекта на Java 8 в IntelliJ, я использую Scala 2.11.1 и Java от Oracle версии 1.8.0_05
Что мне здесь не хватает? или просто невозможно передать лямбда-выражение из Scala на Java так же, как это сделано в указанном примере?