2017-03-21 14 views
2

Ich muss das Schließen-Ereignis mit Alt + F4 Tastaturkürzel deaktivieren. Momentan versuche ich, die Ereignisse in meiner Szene für diesen Tastendruck zu filtern und zu konsumieren, hatte aber keinen Erfolg, das Schließen-Ereignis passiert trotzdem. Folgt unten Teil meines Code:Deaktivieren Alt + F4 für JavaFX

scene.addEventFilter(KeyEvent.KEY_PRESSED, event -> { 
    if (event.isAltDown() && event.getCode().equals(KeyCode.F4)) { 
     event.consume(); 
    } 
}); 

primaryStage.setOnCloseRequest((ev) -> System.exit(0)); 
+0

Have hast du das gleiche mit 'primaryStage.addEventFilter' versucht? – assylias

+0

Ja. Gleiches Verhalten. – daniboy000

+1

Ich weiß nicht viel über JavaFX, aber ich denke, Sie könnten dieses Problem aus dem falschen Blickwinkel angreifen. Vielleicht müssen Sie Java einfach davon abhalten, sich aus irgendwelchen Umständen selbst zu beenden und dann die Fälle zu behandeln, in denen es manuell erfolgen sollte. – Jdman1699

Antwort

5

Sie können versuchen, den impliziten Ausgang zu deaktivieren:

Platform.setImplicitExit(false); 
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() { 
    @Override 
    public void handle(WindowEvent event) { 
     event.consume(); 
    } 
}); 

und dann eine Schaltfläche erstellen, die die App auf Klick schließen werden:

Button btn = new Button(); 
btn.setText("Close"); 
btn.setOnAction(new EventHandler<ActionEvent>() { 

    @Override 
    public void handle(ActionEvent event) { 
     System.exit(0); 
    } 
}); 
Verwandte Themen