0

我正在开发一个使用 Table 打印到视图的 Eclipse 插件。我在各种 Eclipse 和 Ubuntu 版本上测试了系统,并且表中的值是可见的。即行适合内容。但是在将其部署到 Mac 时,行不适合内容。我可以看到里面有东西,但整个内容不可见,我也无法调整它的大小。这是我正在使用的代码:

int style = SWT.NONE;
Table table = new Table(composite, style);
table.setHeaderVisible(true);
table.setLinesVisible(true);

TableColumn col = new TableColumn(table, style);
// Is this ok?
col.setWidth(200);
col.setResizable(true);

for (int i = 0; i < contents.size(); i++){
    TableItem item = new TableItem(table, style);            
    item.setText(contents.get(i));
}

我尝试了不同的风格,但没有运气。知道出了什么问题吗?

4

1 回答 1

1

好的,我想出了这段代码可以解决问题:

public class TableItemPaintListener implements Listener{    
 public void handleEvent(Event event) {
     switch (event.type) {
              case SWT.MeasureItem: {
                  TableItem item = (TableItem) event.item;
                  String text = item.getText();
                  Point size = event.gc.textExtent(text);
                  event.width = size.x;
                  event.height = Math.max(event.height, size.y);
                  break;
            }    
         }
     }
}

接着:

table.addListener(SWT.MeasureItem, new TableItemPaintListener()); 

基本上,我们在每个表项上触发的绘制事件上安装一个处理程序。然后,我们设置单元格高度值以适应内容。

于 2012-09-28T07:03:20.147 回答