eclipse gef-鼠标悬停时显示gef中的嵌套图形



鼠标悬停时在GEF中显示嵌套图形没有问题。在mouseHover(MouseEvent me)add(IFigure)mouseExited(MouseEvent me)上,我删除图形。

但是,一旦我添加了Button(Draw2d),或者添加了一个附着了MouseListener()的图形,现在当我将鼠标悬停在新添加的图形(父图形内部)上时,它就会消失。

我认为问题是第一个图调用了它的mouseExited(MouseEvent me)方法。

因此,我在父图形的mouseExited(MouseEvent me):中执行了此操作

Point exitLocation = me.getLocation();
if (containsPoint(exitLocation.x, exitLocation.y) == false) {
   remove(childFigure);
}

我在鼠标退出时看到,如果它仍然在父图形的边界内,它不会删除子图形。

但这在大多数情况下都有效。有时我的鼠标完全离开了父图形,但子图形并没有从父图形中删除。我不知道发生了什么。

这是个虫子吗?或者有更好的方法吗?

我建议在隐藏/显示图形时尝试使用不同的策略:

  1. 在创建父对象时,始终添加子对象并将其标记为不可见,child.setVisible(false)
  2. 将所有add()remove()调用分别替换为setVisible(false)setVisible(true)

最新更新