markus falkhausen
markus falkhausen

Reputation: 73

Is there a focus handler in javafx

In swing is a FocusManager available to get notified if the focus changes.

FocusManager.getCurrentManager().addPropertyChangeListener (...)

Is there an analogue way in javafx to get notified if the focus in the scenegraph changes?

Upvotes: 1

Views: 746

Answers (2)

Jens Piegsa
Jens Piegsa

Reputation: 7485

You can add a ChangeListener to the focusOwner property of a Scene now:

scene.focusOwnerProperty().addChangeListener(...)

Upvotes: 2

damat-perdigannat
damat-perdigannat

Reputation: 5950

There's none yet but you can try manually looping among the focusedProperties of your target nodes

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){
        }
    }
}

Upvotes: 0

Related Questions