2011-08-31 101 views
3

我有一個由JFace TableViewer包裝的SWT表,但是這個問題也適用於org.eclipse.swt.widgets.Table。如何在SWT表格單元格中右對齊文本?

當我使用一個StyledCellLabelProvider,文本總是左對齊,甚至當我使用

colA.getColumn().setAlignment(SWT.RIGHT); 

這裏是標籤供應商和設置:

TableViewerColumn colA = new TableViewerColumn(measureTable, SWT.NONE); 
colA.setLabelProvider(new StyledCellLabelProvider() { 
    @Override 
    public void update(ViewerCell cell) { 
     ModelItem item = (ModelItem) cell.getElement(); 
     cell.setFont(FONT_REGISTRY.get(MY_SPECIAL_FONT)); 
     cell.setText(item.getText()); 
     super.update(cell); 
    } 
}); 

任何類型的解決方法的將是巨大的。例如,在表格中嵌套一個小部件,並以某種方式正確對齊小部件中的文本。

平臺:Windows 7的

回答

4

您在StyledCellLabelProvider發現了一個錯誤。它不會與其他CellLabelProvider發生。

StyledCellLabelProvider使用「所有者繪製」繪製Table單元格。這意味着,單元格內容不是由操作系統本地繪製的。它由表「所有者」在SWT.PaintItem事件中繪製。

StyledCellLabelProvider不尊重TableColumn的對齊方式。你可以看到源here,方法getTextLayoutForInfo(.)是感興趣的。

一種解決方法可能是通過該方法getTextLayoutForInfo(.)加入

TableColumn col = ((Table)viewer.getControl()).getColumn(cell.getColumnIndex()); 
layout.setAlignment(col.getAlignment()); 

來複制類,修正錯誤(我沒有測試此修復程序,但如果它不工作,你應該得到的想法,並且能夠使它工作)

您還應該添加一個bug報告:Eclipse Bugzilla

+0

我不知道我爲什麼即使使用StyledCellLabelProvider,我只是改變了它使用CellLabelProvider和校準工作.. 。 非常感謝。 – geejay