vjame

优化代码是无止境的
随笔 - 65, 文章 - 9, 评论 - 26, 引用 - 0
数据加载中……

SWT Table的Tableitem多行显示

1:Table创建好之后添加如下代码:
        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");

3.如图所示

posted on 2009-01-10 09:40 lanjh 阅读(2631) 评论(0)  编辑  收藏 所属分类: Java App


只有注册用户登录后才能发表评论。


网站导航: