'initialize' вызывается перед связыванием переменных @ F XML - PullRequest
0 голосов
/ 10 марта 2020

В моем приложении Scala я загружаю файл F XML в конструктор контроллера и задаю для контроллера значение fxmlLoader.setController(this).

ОБНОВЛЕНИЕ (1): более полный пример:

abstract class Controller[A <: Parent] {

  val root: A = loadRoot()
  private val stage: Stage = new Stage()

  def openWindow(): Unit = {
    stage.setScene(new Scene(root))
    stage.show()
    stage.toFront()
  }

  private def loadRoot(): A = {
    val loader = new FXMLLoader(getDefaultLocation())
    loader.setController(this)
    loader.load()
  }

  def getDefaultLocation(): URL = ???
}

-

class SampleController private() extends Controller[VBox] {
  @FXML private var text: TextField = _

  @FXML def initialize(): Unit =  {
    text.textProperty().set("That is some text.")
  }
}

object SampleController {
  def apply(): SampleController = new SampleController()
}

ОБНОВЛЕНИЕ (2): SampleController() называется актером Акка:

val controller = SampleController()
Platform.runLater(() => controller.openWindow())

Теперь я испытываю, что иногда initialize метод вызывается до того, как переменные c будут связаны. Кто-нибудь может вспомнить какие-нибудь обстоятельства, когда это может произойти?

...