【问题标题】:Drag and Drop changes in canvas only visible after minimization画布中的拖放更改仅在最小化后可见
【发布时间】:2014-07-09 17:56:52
【问题描述】:
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);
  }
  }); } }

这段代码 sn-p 是实现将文本拖放到画布上的更大类的一部分。问题是,在我删除它之后,在画布上看不到实际的文本删除,但只有在我最小化外壳然后再次最大化它之后。谁能告诉我如何通过修改此代码使放置动作立即可见?

【问题讨论】:

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


    【解决方案1】:

    您没有做任何事情导致控件被重绘。打电话

    text.redraw();
    

    请求重绘控件(通过调用绘制监听器)。

    注意:如果您在每一滴上添加绘画侦听器,您最终会注册很多侦听器。

    【讨论】:

    • 但是我用拉绳在画布上设置了文字?
    • 你的drawString在一个paint监听器中,这个监听器不会被调用,直到控件需要重绘并且你没有做任何事情告诉SWT控件需要重绘。
    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多