kotlin - TornadoFX 加载多个 FXML 文件
问题描述
我正在使用 Kotlin 和 TornadoFX 开发一个 UI,其中有一个“主要”部分,并且根据我按下视图的“主要”部分(当前是 AnchorPane)的哪个按钮应该改变如下:
我尝试加载 2 个 FXML 文档并将内容添加到我的 Main-Anchorpane,如下所示:
override val root: BorderPane by fxml("/views/MainView.fxml")
val contentContainer: AnchorPane by fxid("contentContainer")
val contentBtn1: AnchorPane by fxml("/views/MainViewProject.fxml")
val btnProject: JFXButton by fxid("btnProject")
init {
btnProject.setOnAction {
contentContainer += contentBtn1
}
}
但我收到以下错误:
javafx.fxml.LoadException: Controller value already specified.
解决方案
我通过为第二个 FXML 文件创建一个新视图解决了这个问题:
class MainProjectView : View("My View") {
override val root: HBox by fxml()
}
然后在我的 MainViewClass 中注入 View 并将其添加到那里:
val mainProjectView: MainProjectView by inject()
init {
mainPane += mainProjectView
}
推荐阅读
- java - element tag 解决“本地主机上的 Tomcat v8.5 服务器启动失败。” 错误。为什么?
- ionic4 - 如何将应用程序根模板组件与应用程序中的其他组件同步
- elasticsearch - ElasticSearch 搜索性能
- javascript - 如何使用 js 和 jquery 在 laravel 中将天数添加到当前日期
- matplotlib - 在 jupyter lab 中使用交互式绘图时控制图形高度
- excel - VBA-Split 不会在空间基础上拆分
- node.js - 未创建相关调度程序作业-Firebase 调度功能
- c# - WH_GETMESSAGE 的全局挂钩仅挂钩到一个应用程序 (VisualStudio)
- javascript - fullcalendar 4.0 使用循环动态设置事件
- jquery - 覆盖数据表中的默认显示选项