JavaFX检查是否有多个元素悬停

Ale*_*lex 6 java javafx

我编写了一个动画,当用户点击"用户"导航标签时,该动画会从导航栏中滑出搜索栏.

如果我的搜索栏失去焦点,或者如果用户按下导航按钮以滑出栏,则我希望播放反向动画失去焦点(如图1所示)图像描述我的问题

我目前通过设置search_wrapper的onMouseExited属性来运行我的hideUsers()方法来实现这个效果,但理想情况下我想要检查

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

我将如何实现这一目标?我已经厌倦了对两个元素使用.isFocused()方法但是无法产生任何结果.

任何反馈将不胜感激.

Ulu*_*Biy 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();
}
Run Code Online (Sandbox Code Playgroud)