【问题标题】:Detect if JavaFX Node appears under cursor [closed]检测JavaFX节点是否出现在光标下[关闭]
【发布时间】:2021-06-23 06:53:40
【问题描述】:

聊天中有一个消息列表。

用户可以固定问题,将其移至列表顶部。
我需要检测固定的问题是否出现在光标下。

目前,我正在使用 setOnMouseEntered 在光标进入问题时显示一些选项:

question.setOnMouseEntered((MouseEvent e) -> {
        unpinAndAnswerOptions.setVisible(true);
    });

这是光标从外部进入固定问题时的样子。 [正确显示]

当固定的问题出现在光标正下方时会发生这种情况。 [显示不正确]

我知道可以在移动后检测问题是否在同一个索引处并使用它来显示选项,但我很好奇是否还有其他方法。

【问题讨论】:

  • 您是否有机会edit 提出您的问题并发布minimal reproducible example 以便我重现您的问题并随后调试您的代码?
  • 问题出在我用来重新排序问题的 ListView 上。 listView.refresh() 解决了我的问题。但我以后在提问时会记住这一点。谢谢:)
  • 重复:刷新往往表明有问题;)
  • 感谢您的编辑 -> 由于我是低代表的新用户,我无法将图像直接添加到帖子中。
  • 我们这里的不是minimal reproducible example

标签: java javafx frontend


【解决方案1】:

如果更新视图使用Platform.runLater();

【讨论】:

  • 如果我正确使用 ListView,这将解决我的问题 -> 多亏了你,我才发现应该怎么做。 listView.refresh() 解决了它
  • 似乎需要使用 refresh 强烈表明存在根本性错误;) runlater .. 两者都有极端情况。 OP的情况可能是这样,也可能不是,没有细节就无法判断。
  • @kleopatra 很有可能出了点问题。这是我第一个使用 JavaFX 和 Spring 的项目。我第一次使用 VBox,但发现如果我想重新排序节点,在 ListView 中显示所有内容要好得多。每个节点都有类似于上面问题中的事件处理程序。我不明白为什么当光标下的节点“传送”时它不算进入节点。显然,当我刷新 listView 时它会这样做。我不知道我到底应该问什么问题,因为我不知道应该如何正确地完成它。这就是我问的原因。
  • 我应该问什么问题这就是为什么提供minimal reproducible example(如问题所建议的那样)是个好主意的部分原因:)
猜你喜欢
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
相关资源
最近更新 更多