鼠标悬停时在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);
}
我在鼠标退出时看到,如果它仍然在父图形的边界内,它不会删除子图形。
但这在大多数情况下都有效。有时我的鼠标完全离开了父图形,但子图形并没有从父图形中删除。我不知道发生了什么。
这是个虫子吗?或者有更好的方法吗?
我建议在隐藏/显示图形时尝试使用不同的策略:
- 在创建父对象时,始终添加子对象并将其标记为不可见,
child.setVisible(false)
- 将所有
add()
和remove()
调用分别替换为setVisible(false)
和setVisible(true)