为什么;“鼠标悬停”;。是否在GWT标头中无法识别等于(event.getType()?

为什么;“鼠标悬停”;。是否在GWT标头中无法识别等于(event.getType()?,gwt,gwtp,Gwt,Gwtp,我有一张有名字栏的桌子 我希望当用户鼠标悬停在nameColumn的标题上时,它将触发一个方法 我试过: Header<String> nameColumnHeader = new Header<String>(new ClickableTextCell()) { @Override public String getValue() { return "Name"; } @Overr

我有一张有名字栏的桌子

我希望当用户鼠标悬停在nameColumn的标题上时,它将触发一个方法

我试过:

Header<String> nameColumnHeader = new Header<String>(new ClickableTextCell()) {
        @Override
        public String getValue() {
            return "Name";
        }

        @Override
        public final void onBrowserEvent(Context context, Element elem, NativeEvent event) {
         if ("mouseover".equals(event.getType())) {
           //
           meaningMessagesPopup.show();  
         }
         else if("mouseout".equals(event.getType())){
             meaningMessagesPopup.hide();
         }
        }
    };
table.addColumn(nameColumn, nameColumnHeader);
标题名称ColumnHeader=新标题(新的ClickableTextCell()){
@凌驾
公共字符串getValue(){
返回“名称”;
}
@凌驾
公共最终void onBrowserEvent(上下文上下文、元素元素、NativeEvent事件){
if(“mouseover”.equals(event.getType())){
//
meaningMessagesPopup.show();
}
else if(“mouseout.equals(event.getType())){
meaningMessagesPopup.hide();
}
}
};
table.addColumn(nameColumn,nameColumnHeader);
但是Gwt似乎没有识别出
“mouseover”.equals(event.getType())


您知道如何在GWT标题中执行MOUSEOVER事件吗?

我找到了答案,即创建一个扩展AbstractCell的CustomCell

     private class HeaderCell extends AbstractCell<String> {

            private String text;

            public HeaderCell(String text) {
              /*
               * Let the parent class know that our cell responds to click events and
               * keydown events.
               */
              //super("click", "keydown");
                super("mouseover"); 
                this.text=text;

            }

            @Override
            public void onBrowserEvent(Context context, Element parent, String value,
                NativeEvent event, ValueUpdater<String> valueUpdater) {
              // Check that the value is not null.
              if (value == null) {
                return;
              }

              // Call the super handler, which handlers the enter key.
              super.onBrowserEvent(context, parent, value, event, valueUpdater);


              if ("mouseover".equals(event.getType())) {
                  SafeHtmlBuilder sb=new SafeHtmlBuilder();
                    sb.appendHtmlConstant("<b>");


                    sb.appendHtmlConstant("<font color=\"blue\">");
                    sb.appendEscaped(text);
                    sb.appendHtmlConstant("</font></b>");

                    meaningMessagesPopup.setWidget(new HTML(sb.toSafeHtml()));


                    int left = event.getClientX() -140;
                    int top = event.getClientY() +30;
                    meaningMessagesPopup.setPopupPosition(left, top);

                        // Show the popup
                    meaningMessagesPopup.show();
              }
              else if ("mouseout".equals(event.getType())) {
                  meaningMessagesPopup.hide();
              }
            }

            @Override
            public void render(Context context, String value, SafeHtmlBuilder sb) {
              /*
               * Always do a null check on the value. Cell widgets can pass null to
               * cells if the underlying data contains a null, or if the data arrives
               * out of order.
               */
              if (value == null) {
                return;
              }

              sb.appendEscaped(value);
            }


        }
私有类HeaderCell扩展AbstractCell{
私有字符串文本;
公共标题单元格(字符串文本){
/*
*让父类知道我们的单元格对单击事件和
*键控事件。
*/
//超级(“点击”、“按键”);
超级(“鼠标盖”);
this.text=文本;
}
@凌驾
public void onBrowserEvent(上下文上下文、元素父级、字符串值、,
NativeEvent事件,ValueUpdater(ValueUpdater){
//检查该值是否不为null。
如果(值==null){
返回;
}
//调用超级处理程序,它处理enter键。
onBrowserEvent(上下文、父级、值、事件、值更新程序);
if(“mouseover”.equals(event.getType())){
SafeHtmlBuilder sb=新的SafeHtmlBuilder();
某人以““””号结尾;
某人以““””号结尾;
某人(文本);
某人以““””号结尾;
meaningMessagesPopup.setWidget(新的HTML(sb.toSafeHtml());
int left=event.getClientX()-140;
int top=event.getClientY()+30;
含义消息spopup.setpoupposition(左,上);
//显示弹出窗口
meaningMessagesPopup.show();
}
else if(“mouseout.equals(event.getType())){
meaningMessagesPopup.hide();
}
}
@凌驾
公共void呈现(上下文上下文、字符串值、安全HtmlBuilder sb){
/*
*始终对值执行null检查。单元格小部件可以将null传递给
*如果基础数据包含空值,或者如果数据到达
*坏了。
*/
如果(值==null){
返回;
}
某人(价值);
}
}
然后

Header name columnheader=新标题(新标题单元格(“我的文本…”)){
@凌驾
公共字符串getValue(){
返回“名称”;
}
};
table.addColumn(nameColumn,nameColumnHeader);
添加GWT.log(“事件:+Event.getType());到您的onBrowserEvent()方法。您是否看到捕获的事件?看到“mouseover”事件了吗?System.out.println(event.getType());然后,当我单击列标题时,它会显示“单击”,但当我将鼠标悬停在上面时,它不会显示任何内容
  Header<String> nameColumnHeader = new Header<String>(new HeaderCell("my Text...")) {
                    @Override
                    public String getValue() {
                        return "Name";
                    }
  };
  table.addColumn(nameColumn, nameColumnHeader);