承接這篇文章提到的範例,在此要探討的是如何解決Table Cell內的文字長度限制,主要是當
文字長度大於260個字元時會有被截斷的情形!
問題如下圖所示
在原本的範例下面再增加一欄位 - Description
在此看到第一列的資料內容沒有完整呈現
問題就在於我們set的LableProvider是繼承自ColumnLabelProvider,會有文字長度呈現的限制
在此因應這個可能會超過長度限制的column set另外定義LableProvider,如下:
主要是繼承自StyledCellLabelProvider
在TableDisplayView.java修改createColumns method
最後,column就可以正確呈現出資料內容
文字長度大於260個字元時會有被截斷的情形!
問題如下圖所示
在原本的範例下面再增加一欄位 - Description
在此看到第一列的資料內容沒有完整呈現
問題就在於我們set的LableProvider是繼承自ColumnLabelProvider,會有文字長度呈現的限制
在此因應這個可能會超過長度限制的column set另外定義LableProvider,如下:
public class TableCellLabelProvider extends StyledCellLabelProvider{
private String title;
public TableCellLabelProvider(String title){
this.title = title;
}
@Override
public void update(ViewerCell cell) {
// TODO Auto-generated method stub
Object element = cell.getElement();
if(element instanceof Shopping){
try {
Method method = Shopping.class.getDeclaredMethod(getGetterMethod(title));
Object value = method.invoke(element);
cell.setText(value+"");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
super.update(cell);
}
public String getGetterMethod(String name){
return "get"+name.substring(0);
}
}
主要是繼承自StyledCellLabelProvider
在TableDisplayView.java修改createColumns method
if(i == title.length - 1)
viewerColumn.setLabelProvider(new DrawGraphicsProvider());
else if(i == 1)
viewerColumn.setLabelProvider(new TableCellLabelProvider(title[i]));
else
viewerColumn.setLabelProvider(new TableLabelProvider(title[i]));
最後,column就可以正確呈現出資料內容
留言
張貼留言