JavaFX Touche Enfoncée événement pour la scène ne s'est pas exécuté si il y a un volet sur les

J'ai un code pour exécuter une fonction lorsque certains touche est enfoncée:

scene.setOnKeyPressed(event -> {
    if (event.getCode() == KeyCode.F1) {
        doSomething();
    }
});

Et cela fonctionne, mais seulement si il n'y a pas de composants destinés, comme un Bouton ou un Champ de texte.
J'ai remarqué qu'il fonctionne si je presse CTRL+F1, ou ALT+F1, ou MAJ+F1, mais seulement F1 fonctionne si il n'y a pas de volet sur.
Est-il un moyen pour éviter cela?

-----Mise à JOUR-----
@James_D dit, je peux le faire à l'aide de eventFilter au lieu de gestionnaire d'événements:

scene.addEventFilter(KeyEvent.KEY_PRESSED, event -> {
    if (event.getCode().equals(KeyCode.ESCAPE)) {
        try {
            FXMLLoader fxmlLoader = new FXMLLoader(TelaPrincipalController.class.getResource("/br/com/atualy/checkout/layout/telaoperacoescaixa.fxml"));
            Parent parent = fxmlLoader.load();
            Scene scene = new Scene(parent, 600,400);
            Stage stage = new Stage();
            stage.setScene(scene);
            stage.initModality(Modality.APPLICATION_MODAL);
            stage.initOwner(this.stage);
            stage.showAndWait();
            System.out.println("----> THIS IS BEING PRINTED TWICE ! <----");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});

La ligne 12 du présent code est imprimé deux fois pour chaque touche ESC appuyez sur. Ce qui signifie que lorsque j'appuie sur esc, il ouvre la nouvelle fenêtre, et quand je le ferme, la fenêtre s'ouvre une fois de plus.
Puis-je le résoudre?

Pas vraiment sûr de savoir pourquoi ce qui se passe, mais vous pouvez résoudre le problème par la consommation de l'événement, après votre System.out.println(...)

OriginalL'auteur Mateus Viccari | 2014-06-09