我想在我的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不受保护。现在该怎么办?
干杯, 添
答案 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) {
}
});
干杯, 添