如何在SWT表单元格中右对齐文本?

时间:2011-08-31 09:38:29

标签: java eclipse swt jface

我有一个由JFace TableViewer包装的SWT表,但是这个问题也适用于org.eclipse.swt.widgets.Table。

当我使用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

1 个答案:

答案 0 :(得分:4)

您在StyledCellLabelProvider中发现了一个错误。任何其他CellLabelProvider都不会发生这种情况。

StyledCellLabelProvider使用“所有者绘制”来绘制Table单元格。这意味着,操作系统不会本机绘制单元格内容。它由表“所有者”在SWT.PaintItem事件中绘制。

StyledCellLabelProvider不尊重TableColumn的对齐方式。您可以看到来源here,方法getTextLayoutForInfo(.)是您感兴趣的。

解决方法可能是复制该类,通过添加

修复错误
TableColumn col = ((Table)viewer.getControl()).getColumn(cell.getColumnIndex());
layout.setAlignment(col.getAlignment());
方法getTextLayoutForInfo(.)中的

(我没有测试此修复,但是如果它不起作用,你应该明白这个想法,并且能够使它工作)

您还应该添加错误报告:Eclipse Bugzilla