我创建了以下函数,以关闭程序中的所有弹出式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 );

09-10 02:21
查看更多