Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SWT eclipse,删除用于绘制表或树表的PainItem侦听器_Eclipse_Swt_Eclipse Rcp_Listener_Event Listener - Fatal编程技术网

SWT eclipse,删除用于绘制表或树表的PainItem侦听器

SWT eclipse,删除用于绘制表或树表的PainItem侦听器,eclipse,swt,eclipse-rcp,listener,event-listener,Eclipse,Swt,Eclipse Rcp,Listener,Event Listener,我使用了一个PaintItem事件监听器(org.eclipse.swt.PaintItem)来绘制一个表树。但当我把鼠标移到桌子上或选择桌子上的东西时,那个监听器总是会被调用。我想删除侦听器,一旦它全部绘制或完成了表格矩形绘制。请帮忙。下面是我正在使用的截取代码: Listener l=new Listener(){ 公共无效handleEvent(事件){ event.gc.setForeground(日食支持.颜色为灰色); event.gc.setLineWidth(2); int cu

我使用了一个PaintItem事件监听器(org.eclipse.swt.PaintItem)来绘制一个表树。但当我把鼠标移到桌子上或选择桌子上的东西时,那个监听器总是会被调用。我想删除侦听器,一旦它全部绘制或完成了表格矩形绘制。请帮忙。下面是我正在使用的截取代码:

Listener l=new Listener(){
公共无效handleEvent(事件){
event.gc.setForeground(日食支持.颜色为灰色);
event.gc.setLineWidth(2);
int currentCol=事件索引;
矩形rect=((TreeItem)event.item).getBounds(currentCol);
event.gc.drawRectangle(rect);
}
};
tree.addListener(SWT.PaintItem,l);

您需要保持侦听器-SWT不记得您画了什么,所以您需要在SWT希望您画的时候画出来。如果你删除它,你会发现你所画的可能会消失。谢谢Greg-449,你是对的,如果我删除了侦听器,它就会消失。但我的问题的解决方案是什么:当我把鼠标移到桌子上或选择桌子上的某个东西时,侦听器总是被调用。这是我不想要的。SWT就是这样工作的-它会要求你经常画画,你只需要这样做。注意,如果你使用SWT.PaintItem,你也应该使用SWT.EraseItem和SWT.MeasureItem,如前所述。或者使用JFace TreeViewer和OwnerDrawLabelProvider。谢谢,实际上我只是想把那些矩形白线(在黑色主题中)变成灰色。因此,我无法使用tree.setLinesVisible(true);,更改颜色;。因此,我使用监听器手动绘制它们,并将它们的颜色设置为灰色。有没有其他方法可以让白线变成灰线而不用监听?如果我们使用tree.setLinesVisible(true)只使用默认表绘制;我是SWT的初学者。请帮忙