【发布时间】:2017-01-12 16:38:40
【问题描述】:
我在名为对话框的弹出窗口中有多个 TextField 对象(类型:Stage)。
我正在尝试为他们定义一个动作处理程序,旨在在单击键盘上的退出按钮后关闭舞台。
这是我的舞台关闭功能:
public void escapeKeyPressed(KeyCode keyCode , Stage dialog){
if (keyCode == KeyCode.ESCAPE ){
dialog.close();
System.out.println("escape got called");
}
}
以下是我所说的:
textUsername.setOnAction((event) -> {escapeKeyPressed(KeyCode.ESCAPE ,dialog );});
textAddress.setOnAction((event) -> {escapeKeyPressed(KeyCode.ESCAPE ,dialog );});
textwp.setOnAction((event) -> {escapeKeyPressed(KeyCode.ESCAPE ,dialog );});
textState.setOnAction((event) -> {escapeKeyPressed(KeyCode.ESCAPE ,dialog );});
textloginName.setOnAction((event) -> {escapeKeyPressed(KeyCode.ESCAPE ,dialog );});
问题是函数没有被调用。
知道如何解决这个问题吗?值得一提的是,如果我将调用者替换为 setOnAction();
【问题讨论】:
-
如果您有一个对话框,您应该考虑使用带有 ButtonType.CANCEL 的 Alert (javafx.scene.control.Alert) 类。这样,您将按照应用程序运行的操作系统的正确顺序获得一个正确标记的按钮,并且 Esc 将(在被认为是默认行为的平台上)关闭对话框。
标签: java javafx event-handling stage