【发布时间】:2018-10-19 02:10:39
【问题描述】:
我已经使用 TornadoFx 构建了一个应用程序。它在加载“主”窗口之前显示一个登录窗口。
我的问题是如何显示这个主窗口。
【问题讨论】:
标签: user-interface kotlin tornadofx
我已经使用 TornadoFx 构建了一个应用程序。它在加载“主”窗口之前显示一个登录窗口。
我的问题是如何显示这个主窗口。
【问题讨论】:
标签: user-interface kotlin tornadofx
当需要更改视图时,调用 replaceWith<MainWindow>() 将场景的根更改为 MainWindow 视图的根,可选择提供一种内置的过渡效果。
如果您需要调整窗口大小,请覆盖MainView 中的onDock 并调用currentWindow?.sizeToScene()。
另一种方法是简单地打开一个新窗口并关闭当前窗口,使用openWindow<MainView>(),然后调用close()。
【讨论】:
openWindow<MainView>() 时,代码无法编译并且我收到错误消息“No type arguments expected for fun openWindow(...”。我是什么做错了吗?
MainView().openWindow()?
我发现在这种情况下有用的另一件事是 TornadoFX 中的 find(clazz::class) 函数,它可以获取当前通过引用其类名显示的 View 的节点。它在大多数地方都是这样工作的,使用以下命令将当前显示的内容从CameraLiveView View 更改为WelcomeScreen View。这有助于不必在应用程序中传递引用。
find(CameraLiveView::class).replaceWith(WelcomeScreen::class, sizeToScene = true, centerOnScreen = true)
【讨论】:
replaceWith<MainWindow>() 在控制器中不可用。
感谢您的回答。它最终与replaceWith(MainView::class) 一起工作并覆盖onDock()。
【讨论】:
replaceWith<MainView>() 在 TornadoFX 1.7.12 中可用。