我的CellTable中带有TextBox(TextInputCell)的GWT Custom标头 - >如何覆盖onBrowserEvent?

时间:2014-12-01 15:21:20

标签: gwt celltable

我想在我的CellTable中使用带有TextBox(TextInputCell)的自定义标头。

我找到了这个例子并试图改编它: GWT 2: how can I add Button to the CellTable's header?

public static class BtnHeader extends Header<String>{

public BtnHeader(ButtonCell cell) {
    super(cell);

}
 @Override
   public void onBrowserEvent(Context context, Element elem, NativeEvent nativeEvent)
   {
      int eventType = Event.as(nativeEvent).getTypeInt();
      if (eventType == Event.ONCLICK)
      {
         nativeEvent.preventDefault();
        updateHeader();
      }
   }
@Override
public String getValue() {
    return "Click!";
}
protected void updateHeader() {
    // TODO to redefine in a defiant class

}

}

在您的代码中:

tnHeader header = new BtnHeader(new ButtonCell()){
            @Override
            protected   void updateHeader(){
                // Actions when clicking button
            }

cTable.addColumn(column, header);

如何根据我的使用情况进行调整?

我尝试了以下内容:

public class TextBoxHeader extends Header<String> {

private String myCaption;

public TextBoxHeader(TextInputCell cell, String caption) {
    super(cell);
    myCaption = caption;
}   

@Override
public String getValue() {
    // TODO Auto-generated method stub
    return myCaption;
}   

protected void updateHeader() {
    // TODO to redefine in a defiant class
} 

}

缺少onBrowserEvent的整个部分。怎么实现呢? 文档(http://www.gwtproject.org/javadoc/latest/com/google/gwt/cell/client/TextInputCell.html)显示onBrowserEvent不受保护。现在该怎么办?

干杯, 添

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。我没有扩展Header,而是使用TextInputCell并将其放在Header中。然后我在标题中添加了一个ValueUpdater,我可以对输入字段中的更改做出反应。

        TextInputCell cell = new TextInputCell("Program");
    com.google.gwt.user.cellview.client.Header<String> header = new com.google.gwt.user.cellview.client.Header<String>(cell) {

        @Override
        public String getValue() {
            // TODO Auto-generated method stub
            return "";
        }
    };  

    header.setUpdater(new ValueUpdater<String>() {

        @Override
        public void update(String value) {

        }
    });

干杯, 添