2014-02-16 50 views
6

我編寫了一個動畫,當用戶點擊'用戶'導航選項卡時,從我的導航欄中滑出搜索欄。JavaFX檢查是否有多個元素被佔用

我想反向動畫,如果我的搜索欄失去焦點,或者如果導航按鈕,用戶按下向巴滑出失去焦點(如描述下在FIG1)image describing my problem

我目前實現的效果發揮設置search_wrapper運行我hideUsers()方法的onMouseExited屬性,但最好我想檢查

nav_button.setOnMouseExited(new EventHandler<MouseEvent>() 
{ 
    @Override 
    public void handle(MouseEvent e) 
    { 
     if(search_wrapper loses focus OR nav_button loses focus) 
      hideUsers(); 
    } 
} 

我怎麼會去實現這一目標?我已經厭倦了在這兩個元素上使用.isFocused()方法,但未能產生任何結果。

任何反饋將不勝感激。

+4

漂亮的GUI .. – Maroun

+0

感謝信@MarounMaroun – Alex

+0

非常漂亮的用戶界面,您可以與我們分享您dashbord? –

回答

1

爲什麼isFocused()無法正常工作?
無論如何,我可以建議你使用JavaFX的屬性綁定功能嘗試:

你有沒有
// define a boolean property 
final BooleanProperty multipleFocusedProperty = new SimpleBooleanProperty(); 

// add listener to track changes in its value, for debugging purpose only here 
multipleFocusedProperty.addListener(new ChangeListener<Boolean>() { 
    @Override 
    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { 
     System.out.println("newValue multiple focused = " + newValue); 
    } 
}); 

// bind it to other property values 
multipleFocusedProperty.bind(search_wrapper.focusedProperty().not().or(nav_button.focusedProperty().not())); 

// finally use it as 
nav_button.setOnMouseExited(new EventHandler<MouseEvent>() 
{ 
    if(multipleFocusedProperty.getValue()) 
     hideUsers(); 
} 
+0

我不知道爲什麼isFocused()不工作,但這已經解決了我的問題,非常感謝你Uluk! – Alex