Как правильно преобразовать объектное свойство javafx в скалярное объектное свойство - PullRequest
0 голосов
/ 29 апреля 2020

Скажем, у меня есть следующий код:

import scalafx.beans.property.ObjectProperty
import scalafx.scene.image.Image

def foo(property: ObjectProperty[Image]) = {...}

Затем где-то еще у меня есть представление изображения, кто imageProperty Я хочу передать функции:

import scalafx.scene.image.ImageView

val view: ImageView
...
val property = view.image
foo(property) // will not compile

Это не скомпилируется так как возвращаемое из изображения свойство является javafx..Image, а не scalafx.

Достаточно ли сделать

foo(property.asInstanceOf[ObjectProperty[Image]])

или есть лучший способ конвертации?

1 Ответ

1 голос
/ 30 апреля 2020

Единственный способ заставить его работать - это явный вызов делегата. Примерно так:

import scalafx.beans.property.ObjectProperty
import scalafx.scene.image.Image

def foo(property: ObjectProperty[jfxsi.Image]) = {
...
  val image: Image
  ...
  property.set(image.delegate) 
}
...