public void dropAccept(final DropTargetEvent event)
{
if (TextTransfer.getInstance().isSupportedType(event.currentDataType))
{
final String d=(String)TextTransfer.getInstance().nativeToJava(event.CurrentDataType);
GC gc = new(text);
//text is the name assigned to the Canvas
text.addPaintListener(new PaintListener()
{
public void paintControl(PaintEvent e)
{
int x= event.x- shell.getBounds().x - text.getBounds().x;
int y=event.y - shell.getBounds().y - text.getBounds().y;
e.gc.drawString(d, x, y);
}
}); } }
此代码段是更大类的一部分,该类实现将文本拖放到画布上。问题是,在我删除它之后,在画布上看不到实际的文本丢弃,但只有在我最小化shell然后再次最大化之后。任何人都可以告诉我如何通过修改此代码立即显示删除操作?
答案 0 :(得分:0)
您没有做任何事情导致重绘控件。呼叫
text.redraw();
请求重绘控件(通过调用绘图侦听器)。
注意:如果您在每个drop上添加绘制侦听器,最终会注册大量侦听器。