Есть ли в 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(...)
Другие вопросы по тегам