代码之家  ›  专栏  ›  技术社区  ›  Alex Pruss

我可以让OwnerDrawLabelProvider在单元格外绘制吗?

  •  0
  • Alex Pruss  · 技术社区  · 9 年前

    我的EclipseRCP应用程序中有一个Jface TableViewer,其列都由OwnerDrawLabelProviders绘制。我的单元格现在都按我希望的方式绘制,但我无法使用OwnerDrawLabelProvider在当前绘制的单元格之外绘制任何内容。

    我已经在下面说明了这个问题。如果正在绘制具有绿色背景的单元格,并且我试图在整个表格上绘制一条红线,则在我退出单元格时,红线将停止绘制。

    enter image description here

    我认为这里发生的事情是其他单元格在红线的顶部绘制,但我通过停用下一列的paint()、measure()和erase()方法来显示情况并非如此。相反,我认为正在发生的是,表一离开单元格就将我的红线隐藏在较低的显示层中。

    是否有任何方法可以使用OwnerDrawLabelProvider在单元格外部绘制?我有一个解决方法,即在每个将被绘制的单元格中发出相同的绘制命令,但这非常难看,可能会导致性能问题。

    1 回复  |  直到 9 年前
        1
  •  3
  •   greg-449    9 年前

    这个 GC 传递给绘制/测量/擦除方法的剪切区域仅设置为当前单元格。将忽略在GC上执行的任何剪切区域之外的绘图操作。

    你可以尝试拨打 GC.setClipping 方法更改剪辑区域,但您可能仍然会遇到被覆盖的问题。