方便地确认kotlin中的javafx对话框

我正在尝试使用JavaFX编写自己的确认对话框,当按下okButton时,会调用lambda表达式。

ConfirmDialog.show("Delete selected items?") { // actions... } 

在这个实现中的问题是从show()函数的actionByConfirm永远不会被调用。 请告诉我,如何纠正?

 object ConfirmDialog : UnborderedStage() { override val pathToScene: String get() = "/module/main/confirm/confirm.fxml" val title: Label val okButton: Button val cancelButton: Button var actionByConfirm: (() -> Unit)? = null init { title = scene.lookup("#title") as Label okButton = scene.lookup("#buttonOk") as Button cancelButton = scene.lookup("#buttonCancel") as Button okButton.setOnMouseClicked { actionByConfirm?.invoke() hide() } cancelButton.setOnMouseClicked { hide() } } fun show(title: String, actionByConfirm: () -> Unit) { this.title.text = title this.actionByConfirm = actionByConfirm show() } } 

UnborderedStage是相同的阶段,但StageStyle.UNDECORATED密切的行动通过集中