Ключевые события JavaFX для дочернего элемента
Я пытаюсь обработать KeyEvents в дочернем элементе, но он не работает.
Моя сцена:
...
public void initScene(){
...
root = new Group();
mainScene = new Scene(root);
mainScene.addEventHandler(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent arg0) {
if(arg0.getCode()==KeyCode.ESCAPE){
System.out.println("escape");
System.exit(0);
}
else if(arg0.getCode()==KeyCode.BACK_QUOTE){
if(Variables.DEBUGGING)
DebugWindow.changeVisibility();
}
});
}
...
public void replaceContent(Parent temp){
root.getChildren().remove(1);
root.getChildren().add(temp);
}
...
И мой дочерний элемент в другом классе:
...
public void initAnotherPanelInAnotherClass(){
root = new Group();
root.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
if(arg0.getButton() == MouseButton.PRIMARY){
GuiApp.replaceContent(SettingsWindow.getInstance().getContent());
Debugger.println("Window changed.");
}
}
});
//THIS EVENT IS NOT FIRED
root.addEventHandler(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent arg0) {
Debugger.println("Something happend.");
//Nothing happen:(
}
});
}
Код работает нормально, KeyEvents моего Scene работают (ESC и обратная кавычка), контент заменяется по щелчку (так что ClickEvent у ребенка тоже работает), мой отладчик также записывает все. За исключением того, что KeyEvent в дочернем элементе не запускается.
Есть ли способ, чтобы мои события Сцены и корневые KeyEvents Сцены работали вместе?