ScalaFx: обработчик событий с функцией первого класса

Я пытаюсь написать обработчик событий в приложении scalaFx. Я нашел следующее решение:

import scalafx.scene.control.ListView
import javafx.scene.input.MouseEvent
import javafx.event.EventHandler

...

    val list = new ListView[String] {
        onMouseClicked = new EventHandler[MouseEvent] {
            override def handle(event: MouseEvent) {
                doSomething(event)
            }
        }
    }

Но это, кажется, очень стандартный код в стиле Java. Есть ли способ сделать это с помощью функции первого класса, как это?

        onMouseClicked = (event: MouseEvent) => doSomething(event)

Компилятор говорит:

Неявное представление не доступно из javafx.scene.input.MouseEvent => scalafx.delegate.SFXDelegate[javafx.scene.input.MouseEvent] с javafx.scene.input.MouseEvent.

1 ответ

Когда вы работаете с ScalaFX, вы всегда должны помнить, чтобы использовать:

import scalafx.Includes._

Это устранит вашу ошибку. Есть много примеров использования обработчиков событий способом ScalaFX, например, здесь:

Другие вопросы по тегам