画布中的拖放更改仅在最小化后可见

时间:2014-07-09 17:56:53

标签: java user-interface drag-and-drop swt java-canvas

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然后再次最大化之后。任何人都可以告诉我如何通过修改此代码立即显示删除操作?

1 个答案:

答案 0 :(得分:0)

您没有做任何事情导致重绘控件。呼叫

text.redraw();

请求重绘控件(通过调用绘图侦听器)。

注意:如果您在每个drop上添加绘制侦听器,最终会注册大量侦听器。

相关问题