Java 同一密钥的两个Eventhandler
我有一个JavaFX场景,有一个登录表单和一个注册表表单,从外部滑入场景。主锚链是Java 同一密钥的两个Eventhandler,java,javafx-8,Java,Javafx 8,我有一个JavaFX场景,有一个登录表单和一个注册表表单,从外部滑入场景。主锚链是root,另外两个是login\u form和register\u form。每个表单都有一个按钮-login调用login()和register调用register() login\u trigger和register\u trigger是两个按钮,可以让表单滑入。当登录表单滑入时,我应该能够在按Enter键时打开login()。登记表也是如此 我就是这么想的,但每当我按Enter键时,什么也没发生。它可以正常工
root
,另外两个是login\u form
和register\u form
。每个表单都有一个按钮-login
调用login()
和register
调用register()
login\u trigger
和register\u trigger
是两个按钮,可以让表单滑入。当登录表单滑入时,我应该能够在按Enter键时打开login()
。登记表也是如此
我就是这么想的,但每当我按Enter键时,什么也没发生。它可以正常工作,按钮没有问题,但回车没有问题。我想将Eventhandler设置为显示的表单
我认为当我将EventHandler设置为null时,当窗体关闭时,以及当窗体打开时给它一个值时,它会起作用。还有别的方法吗?还是我的代码中有一个愚蠢的错误
login_trigger.setOnAction(e -> {
if (login_form.getTranslateX() != 0) {
openLogin.play();
login.setOnKeyPressed(e2 -> {
if (e2.getCode() == KeyCode.ENTER) {
login();
}
});
if (register_form.getTranslateX() != 1280) {
closeRegister.setToX(1280);
closeRegister.play();
}
} else {
login.setOnKeyPressed(null);
closeLogin.setToX(-250);
closeLogin.play();
}
});
register_trigger.setOnAction(e -> {
if (register_form.getTranslateX() != 1030) {
openRegister.play();
register.setOnKeyPressed(e2 -> {
if (e2.getCode() == KeyCode.ENTER) {
register();
}
});
if (login_form.getTranslateX() != -250) {
closeLogin.setToX(-250);
closeLogin.play();
}
} else {
register.setOnKeyPressed(null);
closeRegister.setToX(1280);
closeRegister.play();
}
});
不太清楚通过向按钮添加键处理程序尝试执行的操作:仅当控件具有键盘焦点时,才会处理键事件,除非按下按钮,否则按钮不太可能发生这种情况(在这种情况下,无论如何都会调用动作处理程序…)。如果按tab键直到按钮有焦点,然后按enter键,处理程序是否被调用?@James\u D yes。它在按钮聚焦时调用。将处理程序添加到根窗格而不是按钮。现在它起作用了。谢谢,我认为您真正需要的是文本字段上的操作事件处理程序。不太确定通过向按钮添加键处理程序来尝试执行什么操作:仅当控件具有键盘焦点时才会处理键事件,除非您按下按钮,否则按钮不太可能发生这种情况(在这种情况下,无论如何都会调用操作处理程序…)。如果按tab键直到按钮有焦点,然后按enter键,处理程序会被调用吗?@James_D yes。当按钮有焦点时它会调用。将处理程序添加到根窗格而不是按钮。现在它可以工作了。谢谢。我会想象您真正需要的是文本字段上的操作事件处理程序。