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

发布于 2024-12-02 00:59:09 字数 700 浏览 2 评论 0原文

我有一个由 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

I have a SWT table which wrapped by the JFace TableViewer, but this problem also applies to org.eclipse.swt.widgets.Table.

When I use a StyledCellLabelProvider, the text is always left aligned, even when I use

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

Here is the label provider and setup:

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

Any sort of workaround would be great. For e.g, nesting a widget inside the table and right aligning the text in the widget somehow.

Platform: Windows 7

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

飘落散花 2024-12-09 00:59:09

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

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

StyledCellLabelProvider 不考虑 TableColumn 的对齐方式。您可以查看源代码

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

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

方法 getTextLayoutForInfo(.) 来修复错误(我没有测试此修复,但如果它不起作用,您应该明白,并能够使其工作)

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

You found a bug in StyledCellLabelProvider. It will not occur with any other CellLabelProvider.

StyledCellLabelProvider uses "owner draw" for drawing the Table cells. That means, the cell content is not drawn natively by the OS. It is drawn in an SWT.PaintItem event by the Table "owner".

StyledCellLabelProvider does not respect the alignment of the TableColumn. You can see the source here, the method getTextLayoutForInfo(.) is of interest.

A workaround could be to copy that class, fix the bug by adding

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

in the method getTextLayoutForInfo(.) (I didn't test this fix, but if it doesn't work, you should get the idea, and be able to make it work)

You should also add a bug report: Eclipse Bugzilla

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文