要解决此问题,您可以在对话框中添加一个隐藏的关闭按钮。
import javafx.application.Application;import javafx.scene.*;import javafx.scene.control.*;import javafx.stage.Stage;public class DialogClosure extends Application{ @Override public void start(Stage stage) throws Exception { Button openDialog = new Button("Open Dialog"); openDialog.setonAction(event -> { Dialog dialog = new Dialog(); dialog.getDialogPane().getButtonTypes().add(ButtonType.CLOSE); Node closeButton = dialog.getDialogPane().lookupButton(ButtonType.CLOSE); closeButton.managedProperty().bind(closeButton.visibleProperty()); closeButton.setVisible(false); dialog.showAndWait(); }); stage.setScene(new Scene(openDialog)); stage.show(); } public static void main(String[] args) { launch(args); }}然后,该对话框既满足您可以通过本机窗口系统的窗口关闭图标关闭的要求,又满足JavaFX
Dialog的要求,即在对话框中包含一个关闭按钮以使关闭图标起作用的要求。
或者,您可以将Stage与showAndWait结合使用,而不是Dialog。使用窗口系统的关闭窗口图标可以关闭不包含任何包含按钮的舞台。



