如何将图像与表格单元格的中心对齐(SWT Table)
我开发 Eclipse RCP 应用程序并遇到 Table
问题。我们在数据库中有一些布尔格式的数据,用户希望使用 checkbox
查看该字段。
我尝试使用 Button(SWT.CHECK)
作为 Table-Editor 来实现它,但它运行得太慢了:(
我尝试使用 2 个图像 - 已选中和未选中的检查-框,它可以工作,但我无法将它们对齐到中心,它们会自动向左对齐,
我什至找到了如何捕获 SWT.MeasureItem
和 SWT.PaintItem
事件。并通过更改手动处理它们event.x
字段,但我遇到了一个问题 - 我目前无法获取测量或绘制的列,因为 Event 没有向我提供该信息,
这是否是对齐图像的唯一方法 。通过修改重绘时的事件数据来居中,或者可能有其他方法通过复选框来表示布尔数据?我现在不需要编辑它们,所以只读模式应该足够了。
I develop Eclipse RCP application and got a problem with a Table
. We have some data in database in boolean format and users wants to see that field using checkbox
.
I tried to implement it using Button(SWT.CHECK)
as Table-Editor, but it worked too slow :(
I tried to use 2 images - checked and unchecked check-boxes, it works, but I can't align them to center, they are aligned to left automatically.
I even found how to catch SWT.MeasureItem
and SWT.PaintItem
events and process them manually by change event.x
field, but I got a problem - I can't get what column measuring or painting at the moment, because Event doesn't provides me that information.
Is it the only way to align images to center by modify event data on redrawing, or may be there is other ways to represent boolean data via check-boxes? I don't need to edit them now, so read-only mode should be enough.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以将
PaintListener
添加到您的表格中,当它绘制选定的列(在我的例子中为第 5 列)时,检查行的大小并自行对齐图像。You may add
PaintListener
to your table and when it will paint selected column (column 5 in my case), check the size of row and align the image by yourself..以下是使用 OwnerDrawLabelProvider 的示例: http://bingjava.appspot.com/snippet.jsp? id=3221
我将其与 Tonny 的链接合并到TableViewers 和 Nativelooking 复选框 并创建了方便的抽象 CenteredCheckboxLabelProvider 类
Here is the example using OwnerDrawLabelProvider: http://bingjava.appspot.com/snippet.jsp?id=3221
I combined it with Tonny's link to TableViewers and Nativelooking Checkboxes and created handy abstract CenteredCheckboxLabelProvider class
您可能还想查看此博客条目: TableViewers 和 Nativelooking 复选框。
You might also want to have a look at this blog entry: TableViewers and Nativelooking Checkboxes.
巫师的解决方案派上了用场。我已将其改编为自定义 IStyledLabelProvider,以便在 DelegatingStyledCellLabelProvider 中使用:
请注意,我使用 IMarker 作为元素和 TreeViewer 的数据(因此我正在接收 TreeItems),但您的数据可能会有所不同,并且您的查看器可能会有所不同成为 TableViewer;你只需要做自己的调整。
Sorceror's solution came in handy. I've adapted it to a custom IStyledLabelProvider to be used within a DelegatingStyledCellLabelProvider:
Note that I'm using IMarker as data for elements, and a TreeViewer (so I'm receiving TreeItems), but your data might differ, and your viewer might be a TableViewer; you just have to make your own adjustments.