gpt4 book ai didi

java - JGraphX - 展开/折叠单元格/顶点

转载 作者:行者123 更新时间:2023-11-29 08:54:51 25 4
gpt4 key购买 nike

我的 mxGraph 需要具有展开/折叠功能。

场景就像是,有三个顶点 v1、v2 和 v3。 v2 和 v3 链接到 v1。现在顶点 v1 中有一个小图标,当用户单击该图标时,顶点 v2 和 v3 应该隐藏在 v1 中,当用户单击该图标时,顶点 v2 和 v3 应该可见。这就像顶点 v1 的展开和折叠。

我尝试使用 graph.foldCells() 和 graph.groupCells()。但没有任何效果。下面是我的代码。

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

import com.mxgraph.layout.hierarchical.mxHierarchicalLayout;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;

public class MxGraphSample {

public static void creategraph() {

final JFrame frame = new JFrame();
frame.setMaximumSize(new Dimension(800, 1200));
JPanel panel = new JPanel();
panel.setSize(frame.getMaximumSize().width,
frame.getMaximumSize().height);

final mxGraph graph = new mxGraph();
Object parent = graph.getDefaultParent();
graph.getModel().beginUpdate();

try {
Object v1 = graph.insertVertex(parent, null, "v1", 20, 20, 80, 30);
Object v2 = graph.insertVertex(parent, null, "v2", 120, 70, 80, 30);
Object v3 = graph.insertVertex(parent, null, "v3", 220, 70, 80, 30,
"fillColor=lightgreen");

graph.insertEdge(parent, null, "", v1, v2);
graph.insertEdge(parent, null, "", v1, v3, "strokeColor=lightgreen");

graph.foldCells(true);
graph.cellsFolded(new Object[] { v1, v2, v3 }, true, false);

mxHierarchicalLayout layout = new mxHierarchicalLayout(graph,
SwingConstants.WEST);
layout.setInterRankCellSpacing(70);
layout.execute(graph.getDefaultParent());

} finally {
graph.getModel().endUpdate();
}
final mxGraphComponent graphComponent = new mxGraphComponent(graph);

panel.setLayout(new BorderLayout());
panel.add(graphComponent, BorderLayout.CENTER);

frame.add(panel);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
creategraph();
}
}

enter image description here

任何示例都会有所帮助。

最佳答案

将 v2 和 v3 的父级设置为 v1 而不是 defaultParent()

              Object v2 = graph.insertVertex(v1, null, "v2", 120, 70, 80, 30);
Object v3 = graph.insertVertex(v1, null, "v3", 220, 70, 80, 30,
"fillColor=lightgreen");

否则在声明3个顶点后通过以下方法创建一个组 graph.createGroupCells(new Object[] {v1}); graph.groupCells(v1,30.5,new Object[] {v2,v3});

关于java - JGraphX - 展开/折叠单元格/顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20781096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com