在我的代码中,我将按钮的defaultProperty绑定到其他一些属性,如:
function cc_rect_rect(r1, r2) {
return !(r1.pos.x >= r2.pos2.x || r1.pos2.x <= r2.pos.x || r1.pos.y >= r2.pos2.y || r1.pos2.y <= r2.pos.y);
}
问题是addResourceButton在按Enter时不会触发任何事件 - 既不是OnAction,也不是OnKeyPressed。
默认属性设置得很好 - 我仔细检查了(使用输出和ScenicView)。 ScenicView也没有显示击中键时发生的任何事件。有什么想法吗?
答案 0 :(得分:1)
我相信TextField
s(和其他TextInputControl
s)进程并消费在其上发生的关键事件。因此,在文本字段上按 Enter 将不会在默认按钮上触发操作事件(因为键事件永远不会到达Scene
)。
如果您只是在其中一个文本字段中按下enter时尝试触发按钮的动作事件处理程序,只需将相同的事件处理程序添加到文本字段即可。 E.g。
EventHandler<ActionEvent> addResourceHandler = event -> {
System.out.println("Add resource");
// ...
};
addResourceButton.setOnAction(addResourceHandler);
resourceNameTextField.setOnAction(addResourceHandler);
maxInstancesTextField.setOnAction(addResourceHandler);