如何在GWT中仅在用户用鼠标点击的行中有效地显示图标?

如何在GWT中仅在用户用鼠标点击的行中有效地显示图标?,gwt,Gwt,我喜欢这种效果(在StackOverflow中也用于删除注释),即当鼠标进入一行时,会显示一个图标来删除该行。如果鼠标未点击任何一行,则根本没有图标 我在GWT应用程序中解决了这个问题,但我对这个解决方案不太满意,因为它似乎消耗了大量CPU。我所做的:每一行都有一个图标,开头是issetVisible(false)。我向表中添加了一个MouseMoveHandler,如果鼠标点击一行,该图像就会可见。另一个MouseOutHandler被添加到表中,如果鼠标离开表,它会隐藏每个图像 您是否找到了

我喜欢这种效果(在StackOverflow中也用于删除注释),即当鼠标进入一行时,会显示一个图标来删除该行。如果鼠标未点击任何一行,则根本没有图标

我在GWT应用程序中解决了这个问题,但我对这个解决方案不太满意,因为它似乎消耗了大量CPU。我所做的:每一行都有一个图标,开头是is
setVisible(false)
。我向表中添加了一个
MouseMoveHandler
,如果鼠标点击一行,该图像就会可见。另一个
MouseOutHandler
被添加到表中,如果鼠标离开表,它会隐藏每个图像


您是否找到了有效解决此问题的替代方法?

因为用户一次不会将鼠标放在多行中--您是否尝试过仅实例化一个图标,然后在
MouseMoveHandler
/
MouseOutHandler
上的每行附加/删除它?结果可能会有所不同。另外,您使用什么来监控CPU的使用?

为什么不使用一个带有图像的面板,并使用
MouseMoveHandler/MouseOutHandler将面板移动到光标所在行的相应位置?

除了只使用一个图标之外,常见的错误是创建多个处理程序。使用大量的处理程序来做同样的事情会让你的浏览器陷入对象的困境

而不是

for (final MyRowWidget row : rows) {
    row.addMouseMoveHandler(new MouseMoveHandler() { // a new one every time is bad
        public void onMouseMove(MouseMoveEvent event) {
            row.doShowImage();
        }
    });
}

private static final MouseMoveHandler THE_ONE_AND_ONLY = new MouseMoveHandler() {
    public void onMouseMove(MouseMoveEvent event) {
        MyRowWidget rowWidget = (MyRowWidget) event.getSource();
        rowWidget.doShowImage();
    }
});

...

for (HasAllMouseHandlers row : rows) {
    row.addMouseMoveHandler(THE_ONE_AND_ONLY);
}