如何使所有具有ActionEvent处理程序的按钮处理JavaFX中的Enter键?

时间:2017-09-13 21:21:07

标签: javafx

我的应用程序中有大约50个按钮。对于我用这种方式创建处理程序的所有按钮:

@FXML
protected void handleFooButtonActionEvent(ActionEvent actionEvent) {
    ...
}

这样用户可以使用鼠标左键或空格键按下按钮。但是,通常的做法(据我所知)允许用户使用Enter键按下按钮。是否可以使所有具有ActionEvent处理程序(见上文)的按钮也处理JavaFX中的Enter键,例如,如果我们引用Stage stageScene sceneParent root

1 个答案:

答案 0 :(得分:2)

您可以配置场景来执行此操作:

var listitems= lvTest.Items.Cast<ListViewItem>();

您也可以使用事件处理程序执行此操作:

scene.getAccelerators().put(
    KeyCombination.valueOf("Enter"), () -> {
        Node focusOwner = scene.getFocusOwner();
        if (focusOwner instanceof Button) {
            ((Button) focusOwner).fire();
        }
    });

通常我同意James_D的说法,改变按钮的标准行为并不是一个好主意,但我发现所有GTK应用程序都允许Enter按下按钮,就像你提到的Firefox一样。< / p>