关键字: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); } }