在 JavaFx 中使用 Escape 按钮关闭舞台

Close Stage with Escape button in JavaFx

我创建了以下函数以关闭程序中的任何弹出窗口 Stage

public void escapeKeyPressed(final KeyEvent keyEvent , Stage diolog) {
        if (keyEvent.getCode() == KeyCode.ESCAPE) {
            diolog.close();
        }
    }

然后,我有一个可点击的图片,点击后会弹出一个表单:

问题是当我调用函数时第一个参数出错。 这是我的称呼 ;)

 escapeKeyPressed( KeyCode.ESCAPE ,dialog );

有人知道我该如何解决吗?

您的方法签名是 (final KeyEvent keyEvent, Stage diolog) 并且您传递的 KeyCode 作为第一个参数不是 KeyEvent.

您可以传递原始的 KeyEvent 来完成签名:

yourPopUp.setOnKeyPressed((KeyEvent event) -> escapeKeyPressed(event, dialog ));

但是如果您更新方法签名以直接接受 KeyCode 会更干净:

public void escapeKeyPressed(KeyCode keyCode , Stage diolog) {
    if (keyCode == KeyCode.ESCAPE)
        diolog.close();
}

在这种情况下,您可以将原始调用设为:

escapeKeyPressed(KeyCode.ESCAPE, dialog );