按下 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
有焦点,并且您不希望 button
在 button
被点击。当 button
获得焦点时,此代码将立即将焦点返回给 defaultFocusNode
。
button.focusedProperty().addListener((observableValue, oldValue, newValue) -> {
if (newValue) defaultFocusNode.requestFocus();
});
我在场景上有一个按钮,只要按下 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
有焦点,并且您不希望 button
在 button
被点击。当 button
获得焦点时,此代码将立即将焦点返回给 defaultFocusNode
。
button.focusedProperty().addListener((observableValue, oldValue, newValue) -> {
if (newValue) defaultFocusNode.requestFocus();
});