Focus javafx中有焦点处理程序吗

Focus javafx中有焦点处理程序吗,focus,javafx,focusmanager,Focus,Javafx,Focusmanager,在swing中,如果焦点发生变化,FocusManager可以得到通知 FocusManager.getCurrentManager().addPropertyChangeListener (...) javafx中是否有类似的方法可以在场景图中的焦点发生变化时获得通知?目前还没有,但您可以尝试在目标节点的focusedProperties之间手动循环 private void handleFocusChangesStartingFromParentNode(Parent parentNode

在swing中,如果焦点发生变化,FocusManager可以得到通知

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

javafx中是否有类似的方法可以在场景图中的焦点发生变化时获得通知?

目前还没有,但您可以尝试在目标节点的focusedProperties之间手动循环

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){
        }
    }
}
private void handleFocusChangesStartingFromParentNode(父parentNode){
对于(节点:parentNode.getChildrenUnmodifiable()){
node.focusedProperty().addListener(新的ChangeListener()){
@凌驾

public void changed(observeValue您现在可以向
场景的属性添加
changeelistener

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