GWT如何继承EditTextCell并重写某些方法,例如:edit(上下文上下文,父元素,字符串值)

masterdany88

这是我对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()方法的原因。原始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到列中以保存编辑后的值。

在这里,您有一个完整的工作示例,其中的简单表类型仅包含一个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);

请注意,一旦您将单元格值编辑为非空,此后将不会显示编辑器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档