按下 enter 或 space 时防止按钮触发 Javafx

Prevent Button from firing when enter or space is pressed Javafx

我在场景上有一个按钮,只要按下 space 栏或回车键,这个按钮就会自动触发。我希望用户能够在不触发此按钮的情况下键入这些键。我已经尝试在场景中的其他节点上执行 root.requestFocus() 并调用请求焦点方法。按下这些键时如何防止此按钮触发。感谢您的帮助。

编辑: 到目前为止,我刚刚完成了使 Javafx 应用程序运行的样板代码,添加了该按钮和一些标签。我已经在我的应用程序的几个节点中尝试了 requestFocus() 方法,其中 none 有所不同。我还有一个 scene.setOnKeyPressed 按键动作事件侦听器。

您是否尝试过为 consumes the event 添加事件过滤器 javafx.scene.input.KeyEvent

您可以使用 button.setFocusTraversable() 方法 (docs)。这可以防止按钮自动聚焦,例如按 TAB.

Button button = new Button("Some Action");
button.setFocusTraversable(false);
button.setOnAction(event -> System.out.println("Some action called!"));

假设您的 defaultFocusNode 有焦点,并且您不希望 buttonbutton 被点击。当 button 获得焦点时,此代码将立即将焦点返回给 defaultFocusNode

button.focusedProperty().addListener((observableValue, oldValue, newValue) -> {
        if (newValue)  defaultFocusNode.requestFocus();
      });