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