Есть ли в javafx обработчик фокуса
На ходу есть FocusManager, доступный для получения уведомлений об изменении фокуса.
FocusManager.getCurrentManager().addPropertyChangeListener (...)
Есть ли в javafx аналогичный способ получать уведомления, если фокус в графе сцены меняется?
2 ответа
Решение
Пока нет ни одного, но вы можете попробовать вручную зацикливать среди focusProperties ваших целевых узлов
private void handleFocusChangesStartingFromParentNode(Parent parentNode) {
for (Node node : parentNode.getChildrenUnmodifiable()) {
node.focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
performHandling();
}
});
try{
handleFocusChangesStartingFromNode((Parent)node);
}catch(ClassCastException e){
}
}
}
Вы можете добавить ChangeListener
к focusOwner
свойство Scene
сейчас:
scene.focusOwnerProperty().addChangeListener(...)