如何为GWT中的Datagrid提供每个单元格的工具提示

时间:2013-01-23 06:57:55

标签: gwt-celltable gwt-2.5

我有一个Datagrid,我需要在工具提示中显示每个单元格的值。

如果我使用的是Celltable,那么我可以通过以下方式轻松设置每个单元格的标题。

cellTable.addCellPreviewHandler(new Handler<GWTEvent>() {
  @Override
  public void onCellPreview(CellPreviewEvent<GWTEvent> event) {
    if ("click".equals(event.getNativeEvent().getType())) {
    GWTEvent data1 = event.getValue();
    fireEvent(new ClassicViewWidgetClickEvent(eventsList.get(i).getMessageId()));
    }
    if ("mouseover".equals(event.getNativeEvent().getType())) {
      Element cellElement = event.getNativeEvent().getEventTarget().cast();
      cellElement.setTitle("Bod Message");
    }
  }
}

如果我为Datagrid写了相同的逻辑,它只是为点击事件工作。 mouseover 事件未触发。为什么不为Datagrid解雇? 实际上我的主要问题是如何在datagrid中为每个单元设置磁贴?你还有其他选择。 请回复。

1 个答案:

答案 0 :(得分:-2)

对于工具提示,请创建一个内部类:

public class MyTooltip extends PopupPanel {
    /**
     * @param html
     *            is to pass tip information.
     */
    @Inject
    public MyTooltip(final HTMLPanel html) {
        super(true);
        setWidget(html);
    }
}

在鼠标悬停/单击单元格时执行以下操作

    final HTMLPanel html = new HTMLPanel("");
    html.getElement().setAttribute("style","padding: 10px;"); // set some style
    html.add(new Label("hello!")); // add widgets
    MyTooltip tooltip = new MyTooltip();
    tooltip.setWidget(html);
tooltip.setPopupPosition(event.getClientX() + 10,event.getClientY() + 10);
    tooltip.show();