Metto questo codice come esempio:
codice:
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
public class EsempioCanvasConFreccia {
public static void main (String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("METAMODEL_VIEW");
shell.setSize(1000, 700);
shell.setLocation(0,0);
Canvas canvas = new Canvas(shell, SWT.NONE);//canvas base che ricopre la shell
canvas.setSize(1000, 700);
canvas.setLocation(0, 0);
final Canvas canvas1 = new Canvas (canvas, SWT.NONE);//canvas che voglio muovere a mio piacimento
GridData gridData = new GridData();
gridData.horizontalAlignment = org.eclipse.swt.layout.GridData.END;
gridData.heightHint = -1;
canvas1.setLayoutData(gridData);
canvas1.setSize(110,130);
canvas1.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY));
canvas1.setLocation(50,50);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
In effetti l'oggetto "canvas1" che voglio poter muovere si trova sull'oggetto "canvas" che a sua volta è costruito sull'oggetto "shell".
Spero di essere stato sufficentemente chiaro