JavaFX检查是否有多个元素悬停
我编写了一个动画,当用户单击“用户”导航选项卡时,它会从我的导航栏中滑出搜索栏 如果我的搜索栏失去焦点,或者用户按下导航按钮滑出搜索栏失去焦点,我希望播放反向动画(如图1所示) 目前,我通过将search_包装的onMouseExited属性设置为运行我的JavaFX检查是否有多个元素悬停,java,javafx,Java,Javafx,我编写了一个动画,当用户单击“用户”导航选项卡时,它会从我的导航栏中滑出搜索栏 如果我的搜索栏失去焦点,或者用户按下导航按钮滑出搜索栏失去焦点,我希望播放反向动画(如图1所示) 目前,我通过将search_包装的onMouseExited属性设置为运行我的hideUsers()方法来实现这一效果,但理想情况下,我希望进行检查 nav_button.setOnMouseExited(new EventHandler<MouseEvent>() { @Override
hideUsers()
方法来实现这一效果,但理想情况下,我希望进行检查
nav_button.setOnMouseExited(new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent e)
{
if(search_wrapper loses focus OR nav_button loses focus)
hideUsers();
}
}
nav_按钮。setOnMouseExited(新的EventHandler()
{
@凌驾
公共无效句柄(MouseEvent e)
{
如果(搜索包装器失去焦点或导航按钮失去焦点)
隐藏者();
}
}
我该如何实现这一点呢?我已经厌倦了在这两个元素上使用.isFocused()方法,但都没有产生任何结果
任何反馈都将不胜感激。为什么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();
}
//定义一个布尔属性
final BooleanProperty multipleFocusedProperty=新的SimpleBoleanProperty();
//添加侦听器以跟踪其值的更改,此处仅用于调试目的
multipleFocusedProperty.addListener(新的ChangeListener(){
@凌驾
public void已更改(您在那里拥有的ObservaleValueNice GUI..谢谢@Marounnaroun非常好的UI,您能与我们分享您的dashbord吗?@SoltaniNeji请原谅代码,它的质量有点差(我3年前刚开始编程时写的)。你可以在这里找到源代码:请记住,自从我3年前编译它以来,我还没有测试过它,可能有一些编译错误。享受:)我不知道为什么isFocused()不起作用,但这解决了我的问题,非常感谢!