Mac上的Java表奇怪

时间:2012-09-28 04:29:52

标签: java macos eclipse-plugin swt

我正在开发一个Eclipse插件,它使用Table打印到视图。我在各种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));
}

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

1 个答案:

答案 0 :(得分: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()); 

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