我正在使用
Workspace
龙卷风的特点,我正在努力使他们与
Scopes
. 当我启动应用程序时,我需要设置一些东西,当它完成时,我启动TornadoFX应用程序并提供
Scope
我的第一个观点。之后我想能够
dock
我的其他观点
工作空间
在新的
范围
但这不起作用,因为某些原因:原始的
View
不会被拆掉,但是新的
视图
我只是在屏幕上看不到它。有什么问题?下面是我的代码来重现这个问题:
fun main(args: Array<String>) {
Application.launch(TestApp::class.java, *args)
}
class ParentScope : Scope() {
val id = UUID.randomUUID().toString().substring(0, 4)
}
class ChildScope : Scope() {
val id = UUID.randomUUID().toString().substring(0, 4)
}
class TestApp : App(Workspace::class) {
override fun onBeforeShow(view: UIComponent) {
workspace.dock<ParentView>(ParentScope())
}
}
class ParentView : View("parent") {
override val scope = super.scope as ParentScope
override val root = hbox {
button("new child") {
action {
workspace.dock<ChildView>(ChildScope())
}
}
}
override fun onDock() {
logger.info("Docking parent (${scope.id})")
}
override fun onUndock() {
logger.info("Undocking parent (${scope.id})")
}
}
class ChildView : View("child") {
override val scope = super.scope as ChildScope
override val root = hbox {
text("In child")
}
override fun onDock() {
logger.info("Docking child (${scope.id})")
}
override fun onUndock() {
logger.info("Undocking child (${scope.id})")
}
}
单击w后的输出
new child
按钮是这样的:
10:56:19.415 [JavaFX Application Thread] INFO Test - Docking parent (d202)
10:56:23.967 [JavaFX Application Thread] INFO Test - Docking child (cbc5)
我看到的是一样的
ParentView
. 如果我点击
新生儿童
再一次
ChildView
脱离连接,一个新的
儿童观
停靠,但我仍然只看到
父视图
:
10:56:31.228 [JavaFX Application Thread] INFO Test - Undocking child (cbc5)
10:56:31.228 [JavaFX Application Thread] INFO Test - Docking child (1dd8)