TornadoFX片段OpenWindow始终位于顶部

时间:2019-01-11 14:30:07

标签: kotlin tornadofx

我正在使用TornadoFX的pl + geom_vline(xintercept = .5) + geom_vline(xintercept = .8) + geom_vline(xintercept = .9) 类,并使用它的fragment方法在新窗口中打开每个新的fragment

窗口打开,一切正常。我将模态设置为openWindow(),以便在新片段处于活动状态时可以访问原始屏幕。

我遇到的问题是,新窗口始终位于顶部 ,因此我不得不将其移动以访问不理想的原始窗口。

这是设计使然吗/还是可以更改此行为?

我一直在使用Modality.NONE的{​​{1}}参数,将其设置为null和另一个openWindow(),但似乎无济于事。

首先,打开窗口的代码owner =是片段。

Stage

接下来,这就是我用范围声明片段的方式:

view

提前谢谢!

1 个答案:

答案 0 :(得分:1)

在另一个上下文中打开新窗口时,默认情况下owner属性设置为原始UIComponent。您可以将owner = null传递给openWindow来防止这种情况,从而允许将窗口放置在原始窗口的下方。这是一个完整的应用程序,显示了它的工作原理:

class MyApp : App(MainView::class)

class MainView : View() {
    override val root = stackpane {
        setPrefSize(800.0, 600.0)
        button("Open new window").action {
            find<NewWindow>().openWindow(owner = null)
        }
    }
}

class NewWindow : Fragment() {
    override val root = label("I'm not modal!")
}

如果仍然无法正常工作,请尝试减少代码中的因素数量:)

enter image description here