gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:32:50 24 4
gpt4 key购买 nike

我编写了一个动画,当用户单击“用户”导航选项卡时,它会从我的导航栏中滑出搜索栏。

如果我的搜索栏失去焦点或者如果用户按下以滑出搜索栏的导航按钮失去焦点(如图 1 中所述),我希望播放反向动画 image describing my problem

我目前通过设置 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();
}
}

我将如何实现这一目标?我已经厌倦了在两个元素上使用 .isFocused() 方法,但未能产生任何结果。

如有任何反馈,我们将不胜感激。

最佳答案

为什么 isFocused() 不起作用?
无论如何,我建议您尝试使用 JavaFX 的属性绑定(bind)功能:

// 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();
}

关于JavaFX 检查是否有多个元素被悬停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com