Eclipse plug-in - How to solve SWT Table cell text length limit

承接這篇文章提到的範例,在此要探討的是如何解決Table Cell內的文字長度限制,主要是當

文字長度大於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就可以正確呈現出資料內容

留言