我有一个SWT表,其中有很多表项,我正在使用paint Listener evnt.gc.drawText和event.gc.draw Image方法在表项中绘制详细信息
当我调用table.reraw()方法时,整个表都会被重新绘制,但我只想重新绘制一个表项,而不影响其他表项
获取要重新绘制并使用的项目的TableItem
:
Rectangle bounds = tableItem.getBounds();
table.redraw(bounds.x, bounds.y, bounds.width, bounds.height, true);
要使用PaintListener event.gc绘制对象,我们需要首先使用table.setBounds(int x,int y,int width,int height)选项设置表的边界。如果setBounds选项未与对象一起使用,则paintControl事件将不会对它们起作用。
Canvas canvas = new Group(composite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
canvasSchema.setBounds(180, 5, 750, 500);
canvas.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent e) {
if(lstSchemaReq.getSelectionCount() > 0){
e.gc.drwaOval(100, 40, 50, 50);
}
}
});