【问题标题】:Prevent Button from firing when enter or space is pressed Javafx防止按钮在输入或按下空格时触发Javafx
【发布时间】:2019-08-01 05:11:25
【问题描述】:

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

编辑: 到目前为止,我刚刚完成了使 Javafx 应用程序工作的样板代码,添加了该按钮和一些标签。我已经在我的应用程序的几个节点中尝试了 requestFocus() 方法,但都没有产生任何影响。我还有一个scene.setOnKeyPressed 按键动作事件监听器。

【问题讨论】:

标签: java javafx openjfx


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 你能包含代码吗?我希望这个按钮在用户点击它时仍然可以访问。
    • @Jack button.addEventFilter(KeyEvent.ANY, Event::consume).
    【解决方案3】:

    假设您的defaultFocusNode 具有焦点,并且您不希望您的button 在单击button 时执行其默认行为,即为自己(并远离defaultFocusNode)获取焦点。当button 获得焦点时,此代码将立即将焦点返回给defaultFocusNode

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-18
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      相关资源
      最近更新 更多