Swing 中有一个 FocusManager 可用于在焦点更改时获得通知。
FocusManager.getCurrentManager().addPropertyChangeListener (...)
如果场景图中的焦点发生变化,javafx 中是否有类似的方式来获得通知?
Swing 中有一个 FocusManager 可用于在焦点更改时获得通知。
FocusManager.getCurrentManager().addPropertyChangeListener (...)
如果场景图中的焦点发生变化,javafx 中是否有类似的方式来获得通知?
您现在可以将 a 添加ChangeListener
到 a 的focusOwner
属性中Scene
:
scene.focusOwnerProperty().addChangeListener(...)
目前还没有,但您可以尝试在目标节点的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){
}
}
}