Ext GWT 3.0网格鼠标事件

Ext GWT 3.0网格鼠标事件,gwt,grid,tooltip,gxt,Gwt,Grid,Tooltip,Gxt,我有一个从数据库填充的网格,运行良好。现在,我想向这个网格中添加一个mouseover事件,并显示一个工具提示文本,该文本以多行方式显示高亮显示记录的所有列值。这里的业务案例是,网格中显示了相当多的列,用户希望在选择记录之前快速预览,而不是水平滚动到最后。在这种情况下,挤压所有这些列以适应屏幕不是一个干净的解决方案 我已经尝试查看了GXT 3.0 API中用于Grid和GridView的所有可用方法,但找不到任何方法来获取突出显示的记录。MouseMove、MouseDown和MouseClic

我有一个从数据库填充的网格,运行良好。现在,我想向这个网格中添加一个mouseover事件,并显示一个工具提示文本,该文本以多行方式显示高亮显示记录的所有列值。这里的业务案例是,网格中显示了相当多的列,用户希望在选择记录之前快速预览,而不是水平滚动到最后。在这种情况下,挤压所有这些列以适应屏幕不是一个干净的解决方案

我已经尝试查看了GXT 3.0 API中用于Grid和GridView的所有可用方法,但找不到任何方法来获取突出显示的记录。MouseMove、MouseDown和MouseClick有几个事件,但MouseOver没有

我也尝试过各种论坛来寻找解决方案,但似乎还没有,所以我认为如果我开始这个帖子,对其他人也可能有用

请注意,此问题与Ext JS无关。我使用的版本是extgwt3.0.1


感谢您,您可以通过创建一个自定义单元格并将其传递到网格的特定ColumnConfig来实现这一点

使用自定义单元格,您可以访问所需的所有事件。
一旦你有权访问你需要的信息,可以通过多种方式显示它。GXT为此提供了许多解决方案。快速提示可能是实现此目的的方法。

MouseMove
是您想要的方法。只有当鼠标在小部件上时才会触发

或者,您可以使用以下方法将DOM事件接收到小部件:

DOM.sinkEvents(widget.getElement(), Event.ONMOUSEOVER);
mouseX = DOM.eventGetClientX(event);
mouseY = DOM.eventGetClientY(event);
在小部件的
构造函数
onLoad
方法中,然后覆盖小部件的onBrowserEvent:

@Override
public void onBrowserEvent(Event event){
final int eventType = DOM.eventGetType(event);
    if(eventType == Event.ONMOUSEOVER) {
        //DISPLAY THE INFO
    }
}
这肯定比直接添加处理程序更难,但是可以定制。你可以选择其中一个

顺便说一句,您可能希望使用以下方法获取鼠标位置:

DOM.sinkEvents(widget.getElement(), Event.ONMOUSEOVER);
mouseX = DOM.eventGetClientX(event);
mouseY = DOM.eventGetClientY(event);

谢谢Jonathan的回复。创建自定义单元格将为我提供突出显示单元格中可用的内容,而不是记录。是否可以获取记录对象本身,然后允许我检索记录中的所有列数据?如果是,那么我可以使用一个自定义单元格,例如ID列,然后从中获取,当然可以。创建单元类时,请创建一个构造函数,该构造函数接受您的视图(或者更具体地说,接受您的存储)。然后将该实例存储到一个私有final变量,然后可以在该存储中查询与当前模型对应的记录。有意义吗?我有一个单独的网格类,它实现了IsWidget,并在重写的asWidget()实现中返回网格。我可以在构造函数中添加sinkEvents,但无法覆盖onBrowserEvent。grid类只包含构造函数和aswidget方法。另一个问题是,即使我让它重写,是否有一个API调用公开,我可以使用它来获取网格中突出显示的记录,例如getHighlightedItem或其他什么similar@user1847252你的意思是你没有网格类的基类?你应该。。。但即使您没有,您也只需要实现
EventListener
接口。通过设置
normal
hover
CSS,突出显示记录很容易,或者您可以添加
MouseOver
MouseOut
处理程序。不,它不与其他操作/处理程序交互。GWT/Browser中的所有事件都会传播。