我的Eclipse RCP应用程序中有一个Jface TableViewer,其列全部由OwnerDrawLabelProviders绘制。我的细胞现在都按照我想要的方式绘制,但是我无法使用OwnerDrawLabelProvider在当前正在绘制的单元格之外绘制任何东西。
我已经说明了下面的问题。如果正在绘制具有绿色背景的单元格,并且我尝试在整个表格上绘制一条红线,则一旦退出单元格,红线就会停止绘制。
我认为这里发生的事情是其他单元格正在红线的顶部,但我通过停用paint(),measure()和erase(这样做)表明这并非如此。 )下一栏的方法。相反,我认为发生的事情是,表格在离开单元格时将红线隐藏在较低的显示层中。
有没有办法使用OwnerDrawLabelProvider在单元格外部绘制?我有一个解决方法,即在每个要绘制的单元格中发出相同的绘制命令,但这非常难看,可能会导致性能问题。
答案 0 :(得分:3)
传递给paint / measure / erase方法的GC
将剪切区域设置为当前单元格。您在GC上执行的剪切区域之外的任何绘图操作都将被忽略。
您可以尝试调用GC.setClipping
方法来更改裁剪区域,但是您可能仍然遇到被覆盖的问题。