【问题标题】:Why "mouseover".equals(event.getType()) is not recognized in GWT Header?为什么在 GWT Header 中无法识别“mouseover”.equals(event.getType())?
【发布时间】:2014-06-13 12:08:34
【问题描述】:

我有一个带有 nameColumn 的表。

我希望当用户将鼠标悬停在 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);

但似乎 Gwt 不认识"mouseover".equals(event.getType())

你知道如何在 GWT Header 中做 MOUSEOVER 事件吗?

【问题讨论】:

  • 添加 GWT.log("事件:" + event.getType());到您的 onBrowserEvent() 方法。您是否看到捕获的事件?你看到“鼠标悬停”事件了吗?
  • System.out.println(event.getType());然后当我点击列的标题时它显示“点击”,但当我将鼠标悬停时不显示任何内容

标签: gwt gwtp


【解决方案1】:

我找到了答案,那就是创建一个继承 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);
            }


        }

然后

  Header<String> nameColumnHeader = new Header<String>(new HeaderCell("my Text...")) {
                    @Override
                    public String getValue() {
                        return "Name";
                    }
  };
  table.addColumn(nameColumn, nameColumnHeader);

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2017-07-13
    相关资源
    最近更新 更多