Перетаскивание изменений на холсте, видимых только после минимизации
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();
запросить перерисовку элемента управления (вызвав слушателя рисования).
Примечание. Если вы добавите слушателей рисования в каждую каплю, то в итоге вы получите много зарегистрированных слушателей.