В моем приложении 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 будут связаны. Кто-нибудь может вспомнить какие-нибудь обстоятельства, когда это может произойти?