我绘制一个简单的图形(使用Java swing接口)。
图表没问题,但默认/自动顶点尺寸对我来说很小。如何设置顶点大小(矩形或椭圆)?
我可以使用put()更改一些图形行为(如put(mxConstants.STYLE_SHAPE, mxConstants.SHAPE_ELLIPSE))
,但不能更改顶点的大小。
图表没问题,但默认/自动顶点尺寸对我来说很小。如何设置顶点大小(矩形或椭圆)?
我可能误解了许多有关jgraphx的内容吗?
文档很难理解,非常神秘(至少对我而言),我是否可以获得书籍或链接的建议,以便更好地理解jgraphx for Java。
还有一个细节:图形不是逐个元素构建的,而是来自使用jGraphXAdapter使用jgraphT构建的图形
JGraphXAdapter<Incrocio, Strada> graphAdapter =
new JGraphXAdapter<Incrocio, Strada>(listenableGraph);
答案 0 :(得分:0)
感谢安德鲁的耐心。 英语不是我的语言,有时我甚至用意大利语(我的母语)犯了错误。添加我在Java中的新功能。即使在这个论坛中也是新的(相关规则,这可能不是我重播的正确位置)。我没有在适当关注之前阅读您的留言。
我把代码放在一个部分解决方案中,我希望它更清楚。
package it.rex.view;
public class StradarioViewBis2 extends JFrame {
private JPanel contentPane;
// listenableGraph is a complete graph done with JgraphT
public StradarioViewBis2(ListenableGraph<Incrocio, Strada> listenableGraph) {
JGraphXAdapter<Incrocio, Strada> graphAdapter =
new JGraphXAdapter<Incrocio, Strada>(listenableGraph);
//graphAdapter.getStylesheet().getDefaultEdgeStyle().put(mxConstants.STYLE_NOLABEL, "1"); //remove label from edge
graphAdapter.getModel().beginUpdate();
try {
graphAdapter.clearSelection();
graphAdapter.selectAll();
Object[] cells = graphAdapter.getSelectionCells(); //here you have all cells
// Iterate into graph to change cells
for (Object c : cells) {
mxCell cell = (mxCell) c; //cast
mxGeometry geometry = cell.getGeometry();
if (cell.isVertex()) { //isVertex
// Here I can change vertex dimensions
geometry.setWidth(40);
geometry.setHeight(40);
}else{ //is not a vertex, so u can get source and target
// cell.setStyle("orthogonalEdgeStyle");
// cell.getChildAt(x); //Returns the child at the specified index. (target)
}
}
}
finally
{
graphAdapter.getModel().endUpdate();
}
mxIGraphLayout layout = new mxCircleLayout(graphAdapter); // questo sistema le posizione degli elementi
layout.execute(graphAdapter.getDefaultParent());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 550, 450);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
mxGraphComponent graphComponent = new mxGraphComponent(graphAdapter); // is JScrollPane extension
graphComponent.setPageVisible(true);
graphComponent.setBounds(30, 30, 300, 300);
contentPane.add(graphComponent);
//graphComponent.setEnabled(false);
graphComponent.getViewport().setBackground(Color.white);
;
}
}
经过一些尝试,我发现当我更改单元格的标签时,顶点的大小会回到初始维度,而不是当我将焦点移离单元格时。
我想我需要更改图表的默认行为,但我还没有发现如何。
这是在顶级vetex上编辑标签后的结果: enter image description here