Перетаскивание изменений на холсте, видимых только после минимизации

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);
  }
  }); } }

Этот фрагмент кода является частью большого класса, который реализует перетаскивание текста на холст. Проблема в том, что фактическое удаление текста не отображается на холсте после его удаления, а только после того, как я свернул оболочку и затем снова развернул ее. Может кто-нибудь сказать мне, как я могу сделать действия сброса сразу же видоизменяя этот код?

1 ответ

Решение

Вы не сделали ничего, что могло бы привести к перерисовке элемента управления. Вызов

text.redraw();

запросить перерисовку элемента управления (вызвав слушателя рисования).

Примечание. Если вы добавите слушателей рисования в каждую каплю, то в итоге вы получите много зарегистрированных слушателей.

Другие вопросы по тегам