首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法使用GWT跟踪哪个元素被点击了?

有没有办法使用GWT跟踪哪个元素被点击了?
EN

Stack Overflow用户
提问于 2019-04-18 15:41:37
回答 1查看 77关注 0票数 0

我是GWT界的新手,之前我在JavaScript工作。我有一些网页,其中有多个元素。并且我需要使用GWT跟踪哪个元素被单击。

我正在使用GWT 2.8.1

代码语言:javascript
复制
<div class="FileRow">
  <a href="http://l24-n52:/admin/downloadresource=f&amp;table=R_Document&amp;id=405&amp;filename=1000x700.jpg" target="blank" class="fileLink jpg" tabindex="1" id="jpg1"></a>
</div>
<div class="FileRow">
  <a href="http://l24-  n52:/admin/downloadresource=f&amp;table=R_Document&amp;id=405&amp;filename=1000x700.jpg" target="blank" class="fileLink jpg" tabindex="2" id="jpg2"></a>
</div>
<div class="FileRow">
  <a href="http://l24-  n52:/admin/downloadresource=f&amp;table=R_Document&amp;id=405&amp;filename=1000x700.jpg" target="blank" class="fileLink pdf" tabindex="3" id="pdf"></a>
</div>

GWT realization

    Integer tabIndex = 1, count = 1;
    
    for (final FieldFileInfo info : clientData.getFileInfo()) {
    	final FlowPanel rowPanel = new FlowPanel();
    	rowPanel.setStyleName("FileRow");
    			
    	final HyperlinkPanel fileLink = FileInfoParser.getLinkPanel(info);
    	fileLink.setStyleName("fileLink");
    	fileLink.setTabIndex(tabIndex++);
    	fileLink.setText("");
    switch (info.getFileExtension()) {
    	case "png" :
    		fileLink.addStyleName("png");
    	    fileLink.getElement().setId("png");
    		break;
        case "jpg" :
    		fileLink.addStyleName("jpg");
    		fileLink.getElement().setId("jpg"+count);
    		break;
        case "pdf" :
    		fileLink.addStyleName("pdf");
    		fileLink.getElement().setId("pdf");
    		break;
        default :
    		fileLink.addStyleName("file");
    		fileLink.getElement().setId("file");
    }

rowPanel.add(fileLink);
count++;

}

click realization

Element openPng = Document.get().getElementById("png"); 
		Event.sinkEvents(openPng, Event.ONCLICK); 
		Event.setEventListener(openPng, new OpenModalHandler());

现在,我的点击实现只在第一个具有所需ID的元素上起作用。但是,将来可能会有几个元素具有相同的id,因此我不能提醒其他元素。

预期的结果是,当我单击第一个元素时,使用Window.alert()的GWT会显示单击了哪个元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-23 18:27:05

答案非常简单。为了跟踪哪个元素被单击,我刚刚用以下命令修改了case:

代码语言:javascript
复制
fileLink.addClickHandler(new ClickHandlerData<Integer>(tabIndex) {
                        public void onClick(ClickEvent event) {
                            Window.alert("You clicked on " getData());
                        }
});

还可以使用ClickHandlerData实现新类

代码语言:javascript
复制
public abstract class ClickHandlerData<I> implements ClickHandler {
  private I data;

  public ClickHandlerData(I data) {
      this.data = data;
  }

  public I getData() {
      return data;
  }

  public void setData(I data) {
      this.data = data;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55741289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档