关键字:Draw2d 连线 Locator ConnectionEndpointLocator
public class HelloWorld2 {
public static void main(String args[]) {
Shell shell = new Shell();
shell.setText("Draw2d Hello World");
shell.setSize(300, 300);
shell.open();
// create content 4 shell.
createContent4Shell(shell);
while (!shell.isDisposed ()) {
if (!Display.getDefault().readAndDispatch ())
Display.getDefault().sleep ();
}
}
private static void createContent4Shell(Shell shell) {
Panel rootFigure = new Panel();
rootFigure.setLayoutManager(new XYLayout());
IFigure figure1 = new Ellipse();
Ellipse figure2 = new Ellipse();
// --------------------------------------------------------
// add connection
PolylineConnection connection = new PolylineConnection();
connection.setSourceAnchor(new ChopboxAnchor(figure1));
connection.setTargetAnchor(new EllipseAnchor(figure2));
// --------------------------------------------------------
// add Decoration to Connection
connection.setSourceDecoration(new PolygonDecoration());
// --------------------------------------------------------
// add Labels to Connection
ConnectionEndpointLocator Locator1 = new ConnectionEndpointLocator(connection, true);
Locator1.setVDistance(30);
connection.add(new Label("1..*"), Locator1);
ConnectionEndpointLocator Locator2 = new ConnectionEndpointLocator(connection, false);
Locator2.setVDistance(15);
connection.add(new Label("22..*"), Locator2);
ConnectionEndpointLocator Locator3 = new ConnectionEndpointLocator(connection,true);
Locator3.setUDistance(80);
Locator3.setVDistance(-20);
connection.add(new Label("3333..*"),Locator3);
rootFigure.add(figure1,new Rectangle(10,10,60,30));
rootFigure.add(figure2,new Rectangle(170,170,90,90));
rootFigure.add(connection);
LightweightSystem lws = new LightweightSystem(shell);
lws.setContents(rootFigure);
}
}
ConnectionEndpointLocator在定位时非常的方便。setUDistance表示到图像的距离,setVDistance表示到线的距离。