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

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

文字長度大於260個字元時會有被截斷的情形!

問題如下圖所示

在原本的範例下面再增加一欄位 - Description


在此看到第一列的資料內容沒有完整呈現

問題就在於我們set的LableProvider是繼承自ColumnLabelProvider,會有文字長度呈現的限制

在此因應這個可能會超過長度限制的column set另外定義LableProvider,如下:
  1. public class TableCellLabelProvider extends StyledCellLabelProvider{
  2. private String title;
  3. public TableCellLabelProvider(String title){
  4. this.title = title;
  5. }
  6. @Override
  7. public void update(ViewerCell cell) {
  8. // TODO Auto-generated method stub
  9. Object element = cell.getElement();
  10. if(element instanceof Shopping){
  11. try {
  12. Method method = Shopping.class.getDeclaredMethod(getGetterMethod(title));
  13. Object value = method.invoke(element);
  14. cell.setText(value+"");
  15. } catch (Exception e) {
  16. // TODO Auto-generated catch block
  17. e.printStackTrace();
  18. }
  19. }
  20. super.update(cell);
  21. }
  22. public String getGetterMethod(String name){
  23. return "get"+name.substring(0);
  24. }
  25. }

主要是繼承自StyledCellLabelProvider

在TableDisplayView.java修改createColumns method
  1. if(i == title.length - 1)
  2. viewerColumn.setLabelProvider(new DrawGraphicsProvider());
  3. else if(i == 1)
  4. viewerColumn.setLabelProvider(new TableCellLabelProvider(title[i]));
  5. else
  6. viewerColumn.setLabelProvider(new TableLabelProvider(title[i]));

最後,column就可以正確呈現出資料內容

留言