// グラフ表示
this.getTable().addListener(SWT.PaintItem, new Listener(){

   public void handleEvent(Event event) {
      // 3列目をグラフ表示
      if (event.index == 2) {
         // グラフィックコンテキスト取得
         GC gc = event.gc;
         // 現在の前景色、背景色を記憶
         Color foreground = gc.getForeground();
         Color background = gc.getBackground();
         // 3列目の値を取得
         TableItem item = (TableItem) event.item;
         int quantity = Integer.parseInt(item.getText(2));
         // 横幅指定
         Table table = (Table) event.widget;
         TableColumn column = table.getColumn(event.index);
         int width = (column.getWidth() - 1) * quantity / 100;
         // グラフ描画
         gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_YELLOW));
         gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_RED));
         gc.fillGradientRectangle(event.x, event.y, width, event.height, false);
         // グラフの枠を描画
         gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_YELLOW));
         Rectangle rect = new Rectangle(event.x, event.y, width - 1, event.height - 1);
         gc.drawRectangle(rect);
         gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_LIST_FOREGROUND));
         String label = item.getText(1) + " %";
         Point labelSize = gc.textExtent(label);
         int offset = Math.max(0, (event.height - labelSize.y) / 2);
         gc.drawText(label, event.x+2, event.y + offset, true);
         // 前景色、背景色を元に戻す
         gc.setForeground(foreground);
         gc.setBackground(background);
      }
   }
});