【问题标题】:How to change View in TornadoFx如何在 TornadoFx 中更改视图
【发布时间】:2018-10-19 02:10:39
【问题描述】:

我已经使用 TornadoFx 构建了一个应用程序。它在加载“主”窗口之前显示一个登录窗口。

我的问题是如何显示这个主窗口。

【问题讨论】:

    标签: user-interface kotlin tornadofx


    【解决方案1】:

    当需要更改视图时,调用 replaceWith<MainWindow>() 将场景的根更改为 MainWindow 视图的根,可选择提供一种内置的过渡效果。

    如果您需要调整窗口大小,请覆盖MainView 中的onDock 并调用currentWindow?.sizeToScene()

    另一种方法是简单地打开一个新窗口并关闭当前窗口,使用openWindow<MainView>(),然后调用close()

    【讨论】:

    • 感谢您的快速回答,但是当我尝试调用 openWindow<MainView>() 时,代码无法编译并且我收到错误消息“No type arguments expected for fun openWindow(...”。我是什么做错了吗?
    • @SF23 或试试MainView().openWindow()?
    【解决方案2】:

    我发现在这种情况下有用的另一件事是 TornadoFX 中的 find(clazz::class) 函数,它可以获取当前通过引用其类名显示的 View 的节点。它在大多数地方都是这样工作的,使用以下命令将当前显示的内容从CameraLiveView View 更改为WelcomeScreen View。这有助于不必在应用程序中传递引用。

    find(CameraLiveView::class).replaceWith(WelcomeScreen::class, sizeToScene = true, centerOnScreen = true)
    

    【讨论】:

    • 这更适合从控制器中更改视图。由于replaceWith<MainWindow>() 在控制器中不可用。
    【解决方案3】:

    感谢您的回答。它最终与replaceWith(MainView::class) 一起工作并覆盖onDock()

    【讨论】:

    • 太好了,replaceWith<MainView>() 在 TornadoFX 1.7.12 中可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2019-10-07
    相关资源
    最近更新 更多