javafx中是否有焦点处理程序

时间:2013-07-26 20:38:28

标签: focus javafx focusmanager

在swing中,FocusManager可以在焦点发生变化时收到通知。

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

如果场景图中的焦点发生变化,javafx中是否有模拟方法可以获得通知?

2 个答案:

答案 0 :(得分:2)

您现在可以ChangeListener添加Scenescene.focusOwnerProperty().addChangeListener(...) 的{​​{3}}属性:

{{1}}

答案 1 :(得分:0)

目前还没有,但您可以尝试在目标节点的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){
        }
    }
}