关键字:Draw2d 连线 路由 Router ManhattanConnectionRouter
NullConnectionRouter : 直接的直线连接。
FanRouter : 防治连线重叠的连接。
BendpointConnectionRouter : 允许用户任意拖动连线中的部分的方式增加节点。
ShortestPathConnectionRouter : 最短路径的连接。
ManhattanConnectionRouter : 都以垂直和水平的方式来连接,同时回避线条重叠。
ManhattanConnectionRouter 效果:
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);
// --------------------------------------------------------
// add Router to Connection
connection.setConnectionRouter(new ManhattanConnectionRouter());
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);
}
}