允许SWT Table的Tableitem多行显示

    技术2022-05-12  20

    在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行中的内容了

    最新回复(0)