如何在 TornadoFx 中更改视图
How to change View in TornadoFx
我已经使用 TornadoFx 构建了一个应用程序。它在加载 'main' window 之前显示登录 window。
我的问题是如何显示这个主window。
当需要更改视图时,调用 replaceWith<MainWindow>()
将场景的根更改为 MainWindow
视图的根,可选择提供一种内置过渡效果。
如果您需要调整 window 的大小,请覆盖 MainView
中的 onDock
并调用 currentWindow?.sizeToScene()
.
另一种方法是简单地打开一个新的 window 并关闭当前的 window,使用 openWindow<MainView>()
然后调用 close()
.
感谢您的回答。它最终与 replaceWith(MainView::class)
一起工作并覆盖 onDock()
.
我发现在此上下文中有用的另一件事是 TornadoFX 中的 find(clazz::class)
函数,它可以获取 View
的节点,该节点当前通过引用其 class 名称显示.它在大多数地方都像这样使用以下命令将当前显示的内容从 CameraLiveView
View 更改为 WelcomeScreen
View。这有助于不必在应用程序中传递引用。
find(CameraLiveView::class).replaceWith(WelcomeScreen::class, sizeToScene = true, centerOnScreen = true)
我已经使用 TornadoFx 构建了一个应用程序。它在加载 'main' window 之前显示登录 window。
我的问题是如何显示这个主window。
当需要更改视图时,调用 replaceWith<MainWindow>()
将场景的根更改为 MainWindow
视图的根,可选择提供一种内置过渡效果。
如果您需要调整 window 的大小,请覆盖 MainView
中的 onDock
并调用 currentWindow?.sizeToScene()
.
另一种方法是简单地打开一个新的 window 并关闭当前的 window,使用 openWindow<MainView>()
然后调用 close()
.
感谢您的回答。它最终与 replaceWith(MainView::class)
一起工作并覆盖 onDock()
.
我发现在此上下文中有用的另一件事是 TornadoFX 中的 find(clazz::class)
函数,它可以获取 View
的节点,该节点当前通过引用其 class 名称显示.它在大多数地方都像这样使用以下命令将当前显示的内容从 CameraLiveView
View 更改为 WelcomeScreen
View。这有助于不必在应用程序中传递引用。
find(CameraLiveView::class).replaceWith(WelcomeScreen::class, sizeToScene = true, centerOnScreen = true)