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