画图组件jgraphx项目连接线实践(三)

Java画流程图
placeholder image
admin 发布于:2023-07-30 14:47:27
阅读:loading

前面一些文章整体上对流程图组件jgraphx的简单介绍和自带示例的展示,同时也对它的导出进行了实践,实际上仔细点的话里面的东西还是比较多的,但是需要深入的去挖掘它,所以站在我的水平面高度上我将会对我认为有用的一些示例进行研究,本篇文章将对它的连接线做详细的实践。

运行示例

连接线是一个流程图中比较重要的组成部分,它虽然不是关键元素,但却贯穿于整个图形中的思想表达,我所实践的连接线个人也感觉比较全面,参考如下图所示:

image.png

2.知识点

(1)水平线,不带方向的箭头,并且设置了箭头的颜色,宽度和高度;

(2)直线连接线、曲线连接线、空心箭头、颜色渐变的空心箭头;

(3)所有的连接线独立于元素而存在,仅为连接线;

3.参考代码

(1)从样式文件模板中填充样式

//创建图形对象
mxGraph graph = new mxGraph();
String path = ArrowExample.class.getResource("/com/mxgraph/examples/swing/resources/default-style.xml").getPath();
Document document = mxUtils.loadDocument(path);
mxCodec codec = new mxCodec();
codec.decode(document.getDocumentElement(), graph.getStylesheet());

(2)带上箭头折线

//带上箭头折线
graph.getModel().beginUpdate();
try {
    mxCell cell = new mxCell("");
    cell.setStyle("vertical");
    cell.setEdge(true);
    mxGeometry geometry = new mxGeometry();
    geometry.setWidth(100);
    geometry.setHeight(100);
    geometry.setRelative(true);
    geometry.setSourcePoint(new mxPoint(340 , 240));
    geometry.setTargetPoint(new mxPoint(440 , 140));
    cell.setGeometry(geometry);
    graph.addCell(cell , parent);
} finally {
    graph.getModel().endUpdate();
}

(3)颜色渐变空心箭头

    //空心箭头带渐变样式
    graph.getModel().beginUpdate();
    try {
        mxCell cell = new mxCell("");
        cell.setStyle("arrow;fillColor=#FF00FF;gradientColor=#CCFF66;strokeColor=#6666FF");
        cell.setEdge(true);
        mxGeometry geometry = new mxGeometry();
        geometry.setWidth(120);
        geometry.setHeight(120);
        geometry.setRelative(true);
        geometry.setSourcePoint(new mxPoint(300 , 440));
        geometry.setTargetPoint(new mxPoint(420 , 320));
        cell.setGeometry(geometry);
        graph.addCell(cell , parent);
    } finally {
        graph.getModel().endUpdate();
    }

    HelloWorld2Xml.printXml(graph);
    // 创建图形组件并显示图形
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800, 560);
    mxGraphComponent graphComponent = new mxGraphComponent(graph);
    frame.getContentPane().add(graphComponent);
    frame.setVisible(true);
}


 点赞


 发表评论

当前回复:作者

 评论列表


留言区