Aimd's Blog

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: 订阅 订阅 :: 管理 ::
在org上看到一段代码,不过它说的不够清除。
1:Table创建好之后添加如下代码:

        // 向table添加listener,使之可以多行显示
        Listener paintListener = new Listener() {
            
public void handleEvent(Event event) {
                
switch(event.type) {        
                    
case SWT.MeasureItem: {
                        TableItem item 
= (TableItem)event.item;
                        String text 
= getText(item, event.index);
                        Point size 
= event.gc.textExtent(text);
                        event.width 
= size.x;
                        event.height 
= Math.max(event.height, size.y);
                        
break;
                    }
                    
case SWT.PaintItem: {
                        TableItem item 
= (TableItem)event.item;
                        String text 
= getText(item, event.index);
                        Point size 
= event.gc.textExtent(text);                    
                        
int offset2 = event.index == 0 ? Math.max(0, (event.height - size.y) / 2) : 0;
                        event.gc.drawText(text, event.x, event.y 
+ offset2, true);
                        
break;
                    }
                    
case SWT.EraseItem: {    
                        event.detail 
&= ~SWT.FOREGROUND;
                        
break;
                    }
                }
            }
            String getText(TableItem item, 
int column) {
                
return item.getText(column);
            }
        };
       table.addListener(SWT.MeasureItem, paintListener);
       table.addListener(SWT.PaintItem, paintListener);
       table.addListener(SWT.EraseItem, paintListener);

2. 换行要自己加个“\n”到字符串中,如
  TableItem item = new TableItem(table, SWT.NONE, table.getItemCount());
  item.setText(
"first line" + "\n" + "second line");
这样就分两行来显示一个table行中的内容了
posted on 2006-08-04 13:32  Aimd  阅读(4477)  评论(2编辑  收藏  举报