Я искал предложения по автозаполнению документов и IDE и не могу понять это. Самое близкое, что я нашел, это onDelete (), и он работает не так, как я себе представляю.
Мне просто нужен способ запустить некоторый код очистки, когда представление закрыто.
Вот неудачная попытка использовать простой пример из документации.
import tornadofx.*
class MyApp: App(MyView::class)
class MyView: View() {
// this does not print when the window is closed
override fun onDelete() {
super.onDelete()
println("Print on close!")
}
override val root = vbox {
button("Press me")
label("Waiting")
}
}
fun main(args: Array<String>) {
launch<MyApp>(args)
}
Еще одна неудачная попытка в соответствии с предложением ниже:
import tornadofx.*
class MyApp: App(MyView::class)
class MyView: View() {
// "Closing" is never printed when closing this view"
override fun onDock() {
currentWindow?.onHidingProperty()?.onChangeOnce {
println("Closing")
}
}
override val root = vbox {
button("Press me")
label("Waiting")
}
}
fun main(args: Array<String>) {
launch<MyApp>(args)
}
2 ответа
Я использую это в своем проекте прямо сейчас. setOnCloseRequest
мой путь!
override fun onDock() {
currentWindow?.setOnCloseRequest {
println("Closing")
}
}
onDelete
является обратным вызовом для Workspace
в TornadoFX и будет вызываться, если вы нажмете кнопку Delete
в рабочей области, когда этот вид активен. То, что вы можете сделать, это переопределить onDock
и добавить прослушиватель, который будет один раз изменен, в свойство скрытия:
override fun onDock() {
currentWindow?.onHidingProperty()?.onChangeOnce {
println("Closing")
}
}
Похожие вопросы
Новые вопросы
kotlin
Kotlin — это кроссплатформенный статически типизированный язык программирования общего назначения высокого уровня с выводом типов. Этот тег часто используется вместе с дополнительными тегами для различных целей (JVM, JavaScript, нативные и т. д.) и библиотек/фреймворков (Android, Spring и т. д.), используемых разработчиками Kotlin, если вопрос относится именно к этим темам.