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
을 추가, 기억하십시오. 당신이 비 비어있는 셀의 값을 편집하면
이
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);
, 통지, 에디터가 후 표시되지 않습니다하시기 바랍니다 : 여기에
당신은 하나의 String
포함하는 간단한 테이블 형식의 전체 작업 예를 그.
그래서'edit()'메소드를 오버라이드해서는 안됩니까? 대신에'onBrowserEvent()'를 오버라이드해야합니까? – masterdany88
'edit()'메소드를 오버라이드 할 수 있어야합니다. (사실 지금은 더 나은 해결책이라고 생각합니다). 그래서 당신의 접근 방식은 괜찮을 것입니다. 값이 null이 아닌지 확인해야합니다. 또, getValue() 메소드를 참조 - null를 돌려 주어서는 안된다. – Adam
어쩌면 더 나은 솔루션 일 수도 있지만, 실제로는 작동하지 않습니다 !!! 2.6.1 버전의 버그 일 수 있습니다. – masterdany88