我正在使用 Eclipse 3.6 上的 JFace 开发一个应用程序,我希望在 TableViewer 中有实际的小部件——主要是复选框和按钮。我发现的一切似乎都表明目前这是不可能的。
我当前的解决方法包括为包装的 Table 控件设置一个 MouseListener,其中 mouseDown 事件坐标使用getCell()方法转换为单元格并执行操作。然后,我使用内容提供程序来提供图像和格式化文本,它们在某种程度上接近相应小部件的外观。
问题是结果根本不是原生的。有一些解决方法涉及对实际的本机小部件进行屏幕截图,但这有一些问题:
- 这是一个黑客
- 捕获的小部件偶尔会变得可见,从而在屏幕上创建闪烁的伪影
- 它需要图像处理技巧来使捕获的图像与表格颜色混合
- 当需要不同内容的按钮时,它不能很好地缩放
有没有办法在不使用这种繁琐方法的情况下将小部件嵌入 TableViewer 单元格中?底层的 SWT Table 当然可以做到这一点,但是 TableViewer 接口似乎不支持这个......