Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 图形的自动布局(JGraphX)_Java_Graph_Jung_Jgrapht_Jgraphx - Fatal编程技术网

Java 图形的自动布局(JGraphX)

Java 图形的自动布局(JGraphX),java,graph,jung,jgrapht,jgraphx,Java,Graph,Jung,Jgrapht,Jgraphx,我无法显示带有自动布局的JGraphX 我的程序(下面的代码)创建如下输出: 一个足够的结果可能是这样的(我用手移动它们): 我不必坚持使用JGraphX。我还测试了JUNG和JGraphT。但这是我迄今为止最好的成绩。我需要的是一个数据视图,上面有定向的EGE和一些标签 我制作了一个示例代码,展示了它是如何创建的。它类似于。 2012年有一条评论提到了同一个问题“[…]但是我注意到节点有时会重叠,你知道如何解决这个问题吗,我对属性进行了处理,看起来很随意。有什么建议可以总体上改善外观吗?”

我无法显示带有自动布局的JGraphX

我的程序(下面的代码)创建如下输出:

一个足够的结果可能是这样的(我用手移动它们):

我不必坚持使用
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());