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

时间:2016-09-05 07:44:05

标签: java javafx stage

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

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

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

问题是当我调用函数时我得到第一个参数的错误。 我就是这样称呼的;)

 escapeKeyPressed( KeyCode.ESCAPE ,dialog );

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您的方法签名为(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 );