javafx.scene.control.Dialog 按下“ x”将不会关闭

如果我只是创建一个从扩展的空类javafx.scene.control.Dialog<R>,那么当我按下右上角的“ x”按钮时,它不会关闭。

我如何实现这种行为?该API似乎告诉我,我需要实现一个关闭按钮。但就我而言,我不需要关闭按钮,我只想用x按钮或按ESC关闭窗口。这可能吗?

回答:

要解决此问题,您可以在对话框中添加一个隐藏的关闭按钮。

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。使用窗口系统的关闭窗口图标可以关闭不包含任何包含按钮的舞台。

以上是 javafx.scene.control.Dialog 按下“ x”将不会关闭 的全部内容, 来源链接: utcz.com/qa/408342.html

回到顶部