2013-07-26 22 views
1

在swing中,如果焦點更改,可以通過FocusManager獲得通知。javafx中是否有焦點處理程序

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

如果場景圖中的焦點發生變化,javafx中是否有類似的方法來獲得通知?

回答

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

您可以添加ChangeListener到現在ScenefocusOwner屬性:

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