2011-10-23 2 views
2

텍스트 셀에서 onclick 이벤트를 캡처하려고합니다. 왜 클릭 이벤트를 발생시키지 않습니까? -GWT-Textcell이 onclick 이벤트를 실행하지 않습니다.

 TextCell tempCell = new TextCell() { 
      @Override 
      public void onBrowserEvent(Cell.Context context, Element parent, String value, 
        NativeEvent event, ValueUpdater<String> valueUpdater) { 
       if ("click".equals(event.getType())) { 
        Window.alert("Clicked me from cell"); 
       } 
      } 
     }; 
     Column<Contact, String> tempColumn = new Column<Contact, String>(tempCell) { 
      @Override 
      public String getValue(Contact object) { 
      return object.address; 
      } 


     }; 
     table.addColumn(tempColumn, "Address"); 

답변

0

TextCell이 어떤 이벤트도 사용하지 않기 때문에이 기능이 작동하지 않습니다. 대신 AbstractSafeHtmlCell을 하위 클래스로 만들어서 생성자에 전달하여 사용하려는 이벤트를 지정해야합니다.

이 수행합니다

private class MyTextCell extends AbstractSafeHtmlCell<String> { 

/** 
    * Constructs a TextCell that uses a {@link SimpleSafeHtmlRenderer} to render 
    * its text. 
    */ 
    public MyTextCell() { 
    super(SimpleSafeHtmlRenderer.getInstance(), "click"); 

    } 



    @Override 
    public void render(Context context, SafeHtml value, SafeHtmlBuilder sb) { 
    if (value != null) { 
     sb.append(value); 
    } 
    } 

    @Override 
    public void onBrowserEvent(Context context, Element parent, 
     String value, NativeEvent event, 
     ValueUpdater<String> valueUpdater) { 
    GWT.log("Click event!!!!!! Not listening to anything else"); 
    } 
} 
+0

덕분에 .. 난 종류의 비슷한 방식으로 내 코드를 작성 – ravi

1

GWT 이벤트는 열거 형인 것으로 생각합니다 (예 : Event.ONCLICK).

해결하려면 직접 Event.ONCLICK.toString()을 사용하고 이벤트가 발생하는지 확인하십시오.

일반적으로 이벤트 이름이 "클릭"이라고 가정하면 변경 사항이있을 때 응용 프로그램이 작동하지 않을 수있는 매우 취약한 기술이므로 코드에 느슨한 문자열이 없도록 중요하게 기억하십시오.

관련 문제