JavaFX:默认按钮不会触发事件

时间:2015-12-05 14:21:09

标签: events button javafx binding

在我的代码中,我将按钮的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也没有显示击中键时发生的任何事件。有什么想法吗?

1 个答案:

答案 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);