如何右对齐 SWT 表格单元格中的文本?
我有一个由 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您在
StyledCellLabelProvider
中发现了一个错误。使用任何其他CellLabelProvider
都不会发生这种情况。StyledCellLabelProvider
使用“所有者绘制”来绘制Table
单元格。这意味着,单元格内容不是由操作系统本机绘制的。它是由表“所有者”在SWT.PaintItem
事件中绘制的。StyledCellLabelProvider
不考虑TableColumn
的对齐方式。您可以查看源代码解决方法可能是复制该类,通过添加
方法
getTextLayoutForInfo(.)
来修复错误(我没有测试此修复,但如果它不起作用,您应该明白,并能够使其工作)您还应该添加错误报告:Eclipse Bugzilla
You found a bug in
StyledCellLabelProvider
. It will not occur with any otherCellLabelProvider
.StyledCellLabelProvider
uses "owner draw" for drawing theTable
cells. That means, the cell content is not drawn natively by the OS. It is drawn in anSWT.PaintItem
event by the Table "owner".StyledCellLabelProvider
does not respect the alignment of theTableColumn
. You can see the source here, the methodgetTextLayoutForInfo(.)
is of interest.A workaround could be to copy that class, fix the bug by adding
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