Java 图形的自动布局(JGraphX)
我无法显示带有自动布局的JGraphX 我的程序(下面的代码)创建如下输出: 一个足够的结果可能是这样的(我用手移动它们): 我不必坚持使用Java 图形的自动布局(JGraphX),java,graph,jung,jgrapht,jgraphx,Java,Graph,Jung,Jgrapht,Jgraphx,我无法显示带有自动布局的JGraphX 我的程序(下面的代码)创建如下输出: 一个足够的结果可能是这样的(我用手移动它们): 我不必坚持使用JGraphX。我还测试了JUNG和JGraphT。但这是我迄今为止最好的成绩。我需要的是一个数据视图,上面有定向的EGE和一些标签 我制作了一个示例代码,展示了它是如何创建的。它类似于。 2012年有一条评论提到了同一个问题“[…]但是我注意到节点有时会重叠,你知道如何解决这个问题吗,我对属性进行了处理,看起来很随意。有什么建议可以总体上改善外观吗?”
JGraphX
。我还测试了JUNG
和JGraphT
。但这是我迄今为止最好的成绩。我需要的是一个数据视图,上面有定向的EGE和一些标签
我制作了一个示例代码,展示了它是如何创建的。它类似于。
2012年有一条评论提到了同一个问题“[…]但是我注意到节点有时会重叠,你知道如何解决这个问题吗,我对属性进行了处理,看起来很随意。有什么建议可以总体上改善外观吗?”
公共类测试扩展JFrame{
公共静态void main(字符串[]args){
JFrame f=新的JFrame();
f、 设置大小(800800);
f、 设置位置(300200);
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
最终mxGraph=新mxGraph();
mxGraphComponent graphComponent=新mxGraphComponent(图形);
f、 getContentPane().add(graphComponent,BorderLayout.CENTER);
f、 setVisible(真);
对象父对象=graph.getDefaultParent();
graph.getModel().beginUpdate();
试一试{
对象开始=graph.insertVertex(父级,“开始”,“开始”,100,
100, 80, 30);
对于(int i=0;i<10;i++){
对象a=图形。插入顶点(父级,“a”+i,“a”+i,100,
100, 80, 30);
插入图(父,空,“E”+i,开始,a);
对象b=图形.插入顶点(父,“b”+i,“b”+i,100,
100, 80, 30);
插入图(父,空,“E”+i,a,b);
开始=a;
}
}最后{
graph.getModel().endUpdate();
}
形态图(图形,图形组件);
}
专用静态void morphGraph(mxGraph,
MX图形组件(图形组件){
//定义布局
mxIGraphLayout=新的mxIGraphLayout(图形);
//使用变形的布局
graph.getModel().beginUpdate();
试一试{
执行(graph.getDefaultParent());
}最后{
mxMorphing morph=新的mxMorphing(graphComponent,20,1.5,20);
addListener(mxEvent.DONE,新的mxIEventListener(){
@凌驾
公共void调用(对象arg0、mxEventObject arg1){
graph.getModel().endUpdate();
//fitViewport();
}
});
morph.startAnimation();
}
}
}
从示例生成的图形:
不要使用
morphGraph
方法,请尝试使用以下方法:
new mxHierarchicalLayout(graph).execute(graph.getDefaultParent());
这将使用我使用的mxGraph中的默认布局管理器(版本3.9.3
),您可以为图形节点设置坐标。以下是关于我的软件的详细信息。检查第四个屏幕截图。这是客户机代码的存储库。
new mxHierarchicalLayout(graph).execute(graph.getDefaultParent());