2012-09-28 59 views
0

我正在開發一個Eclipse插件,使用表打印出來的視圖。我在各種Eclipse和Ubuntu版本上測試了系統,並且表中的值是可見的。即行適合內容。但是,將其部署到Mac時,這些行不符合內容。我可以看到裏面有東西,但整個內容不可見,我也可以調整它的大小。這裏是我使用的代碼:Java在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

好吧,我想出了這個一段代碼,做的伎倆:

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()); 

基本上,我們就被觸發了油漆事件安裝一個處理程序每個表項。然後,我們將單元格高度值設置爲適合內容。