对话框window定位
Dialog window positioning
我正在 TornadoFX 中创建一个小型非模态对话框,如下所示:
find<Grib>(scope).apply { openModal(block = true,
owner = FX.primaryStage,
stageStyle = StageStyle.UTILITY,
modality = Modality.NONE) }
我该如何设置(和检索)它的 window 位置以备后用?也就是说,我有一个 window 位置的首选项对象,我想更新它,以便下次用户打开 window 时,它会在上次关闭它的同一位置打开。
通过挖掘一些 TornadoFX 源代码,我基本上能够解决我的问题。
我将其添加到我的 init{} 函数中:
Platform.runLater {
root.scene.window.x = Main.preferences.getDouble(GRIB_WINDOW_X, 400.0)
root.scene.window.y = Main.preferences.getDouble(GRIB_WINDOW_Y, 400.0)
}
然后将其添加到我的 close() 函数中:
Main.preferences.putDouble(GRIB_WINDOW_X, root.scene.window.x)
Main.preferences.putDouble(GRIB_WINDOW_Y, root.scene.window.y)
这个 "mostly" 解决了 save/restore window 位置的问题,但是 window 在创建时会闪烁,因为它会从某个默认位置移动到新设置的位置。
我正在 TornadoFX 中创建一个小型非模态对话框,如下所示:
find<Grib>(scope).apply { openModal(block = true,
owner = FX.primaryStage,
stageStyle = StageStyle.UTILITY,
modality = Modality.NONE) }
我该如何设置(和检索)它的 window 位置以备后用?也就是说,我有一个 window 位置的首选项对象,我想更新它,以便下次用户打开 window 时,它会在上次关闭它的同一位置打开。
通过挖掘一些 TornadoFX 源代码,我基本上能够解决我的问题。
我将其添加到我的 init{} 函数中:
Platform.runLater {
root.scene.window.x = Main.preferences.getDouble(GRIB_WINDOW_X, 400.0)
root.scene.window.y = Main.preferences.getDouble(GRIB_WINDOW_Y, 400.0)
}
然后将其添加到我的 close() 函数中:
Main.preferences.putDouble(GRIB_WINDOW_X, root.scene.window.x)
Main.preferences.putDouble(GRIB_WINDOW_Y, root.scene.window.y)
这个 "mostly" 解决了 save/restore window 位置的问题,但是 window 在创建时会闪烁,因为它会从某个默认位置移动到新设置的位置。