如何避免在Open Office / Libre Office Draw中移动形状的连接器

时间:2013-11-19 08:17:58

标签: java api openoffice.org libreoffice uno

我正在以编程方式绘制一个流程图(使用Java UNO运行时参考),其中我显示了If-Else条件。但是我在显示“ELSE”条件时遇到问题,因为在这种情况下连接器移动到中间形状(如附图中的shwon)enter image description here

我用来绘制连接器的代码是: -

XShapes xShapes = (XShapes)
                UnoRuntime.queryInterface(XShapes.class, xDrawPage);
        XMultiServiceFactory xMsf = UnoRuntime.queryInterface(XMultiServiceFactory.class, xDrawDoc);
        Object connector = xMsf.createInstance("com.sun.star.drawing.ConnectorShape"); 
        xShapes.add(UnoRuntime.queryInterface(XShape.class, connector));

XPropertySet xConnector2PropSet = (XPropertySet)UnoRuntime.queryInterface(
                XPropertySet.class, connector);
        xConnector2PropSet.setPropertyValue("EdgeKind", ConnectorType.STANDARD);
        xConnector2PropSet.setPropertyValue("StartShape", xShape1);
        xConnector2PropSet.setPropertyValue("StartGluePointIndex", new Integer(startPt));
        xConnector2PropSet.setPropertyValue("LineEndName", "Arrow");
        xConnector2PropSet.setPropertyValue("EndShape", xShape2 );
        xConnector2PropSet.setPropertyValue("EndGluePointIndex", new Integer(endPt));

请使用Java中的UNO运行时参考建议如何正确布局和路由连接器。

1 个答案:

答案 0 :(得分:4)

我在OpenOffice Draw中遇到了同样的问题,并且找不到任何可能向一个连接器添加更多句柄的可能性。但是一个连接器可以在另一个连接器端。所以我最终使用了两个连接器,第一个没有以箭头结束(蓝色),第二个从第一个结束(红色)开始。

example of non-crossing connectors