我正在开发一个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));
}
我试过不同的风格,但没有运气。什么出了什么问题?
答案 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事件上安装一个处理程序。然后,我们设置单元格高度值以适合内容。