GWT如何继承EditTextCell并覆盖一些方法,f.e.: edit(Context context, Element parent, String value)
GWT how to inherit EditTextCell and override some methods, f.e.: edit(Context context, Element parent, String value)
这是我对 EditTextCell 的实现:
public class MyEditTextCell extends EditTextCell {
@Override
protected void edit(Context context, Element parent, String value) {
if (value.equals("")) {
super.edit(context, parent, value);
} else {
clearViewData(context.getKey());
}
}
}
我希望仅针对空单元格显示文本输入。这就是我重写 edit() 方法的原因。 original EditTextCell的其余行为没问题,所以我没有改变它。
不幸的是,这不起作用。请帮忙
EditTextCell
中的编辑器显示在onBrowserEvent
方法中,所以你只需要:
public class MyEditTextCell extends EditTextCell {
@Override
public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) {
if(value == null || value.isEmpty())
super.onBrowserEvent(context, parent, value, event, valueUpdater);
}
}
请记住,将 FieldUpdater
添加到该列以保存编辑后的值。
这里有一个完整的工作示例,其中简单的 table 类型仅包含一个 String
:
public class MyTableType {
private String value;
public MyTableType(String value) {
super();
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
CellTable<MyTableType> table = new CellTable<MyTableType>();
MyEditTextCell cell = new MyEditTextCell();
Column<MyTableType, String> column = new Column<MyTableType, String>(cell) {
@Override
public String getValue(MyTableType object) {
if(object.getValue() == null)
return "";
else
return object.getValue();
}
};
column.setFieldUpdater(new FieldUpdater<MyTableType, String>() {
@Override
public void update(int index, MyTableType object, String value) {
object.setValue(value);
}
});
table.addColumn(column, "Value");
ArrayList<MyTableType> values = new ArrayList<MyTableType>();
values.add(new MyTableType("one"));
values.add(new MyTableType("two"));
values.add(new MyTableType("three"));
values.add(new MyTableType(null));
values.add(new MyTableType(""));
table.setRowData(values);
请注意,一旦您将单元格值编辑为非空,之后将不会显示编辑器。
这是我对 EditTextCell 的实现:
public class MyEditTextCell extends EditTextCell {
@Override
protected void edit(Context context, Element parent, String value) {
if (value.equals("")) {
super.edit(context, parent, value);
} else {
clearViewData(context.getKey());
}
}
}
我希望仅针对空单元格显示文本输入。这就是我重写 edit() 方法的原因。 original EditTextCell的其余行为没问题,所以我没有改变它。
不幸的是,这不起作用。请帮忙
EditTextCell
中的编辑器显示在onBrowserEvent
方法中,所以你只需要:
public class MyEditTextCell extends EditTextCell {
@Override
public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) {
if(value == null || value.isEmpty())
super.onBrowserEvent(context, parent, value, event, valueUpdater);
}
}
请记住,将 FieldUpdater
添加到该列以保存编辑后的值。
这里有一个完整的工作示例,其中简单的 table 类型仅包含一个 String
:
public class MyTableType {
private String value;
public MyTableType(String value) {
super();
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
CellTable<MyTableType> table = new CellTable<MyTableType>();
MyEditTextCell cell = new MyEditTextCell();
Column<MyTableType, String> column = new Column<MyTableType, String>(cell) {
@Override
public String getValue(MyTableType object) {
if(object.getValue() == null)
return "";
else
return object.getValue();
}
};
column.setFieldUpdater(new FieldUpdater<MyTableType, String>() {
@Override
public void update(int index, MyTableType object, String value) {
object.setValue(value);
}
});
table.addColumn(column, "Value");
ArrayList<MyTableType> values = new ArrayList<MyTableType>();
values.add(new MyTableType("one"));
values.add(new MyTableType("two"));
values.add(new MyTableType("three"));
values.add(new MyTableType(null));
values.add(new MyTableType(""));
table.setRowData(values);
请注意,一旦您将单元格值编辑为非空,之后将不会显示编辑器。