Draw2d 连线六 路由 Router
关键字: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 connectionPolylineConnection connection = new PolylineConnection();connection.setSourceAnchor(new ChopboxAnchor(figure1));connection.setTargetAnchor(new EllipseAnchor(figure2));// --------------------// add Decoration to Connectionconnection.setSourceDecoration(new PolygonDecoration());// --------------------// add Labels to ConnectionConnectionEndpointLocator 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 Connectionconnection.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);}}
?
?
?
?
?