Java JGraphX-单元/顶点的展开/折叠

Java JGraphX-单元/顶点的展开/折叠,java,graph,jgraphx,Java,Graph,Jgraphx,我的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

我的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();
    }
}


任何示例都会有帮助。

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

否则,在声明3个顶点后,使用以下方法创建一个组 createGroupCells(新对象[]{v1});
groupCells(v1,30.5,新对象[]{v2,v3})

你让它工作了吗?我正在寻找这种带有JavaScript库的解决方案。任何有助于完成这项工作的帮助都会很有帮助。
              Object v2 = graph.insertVertex(v1, null, "v2", 120, 70, 80, 30);
        Object v3 = graph.insertVertex(v1, null, "v3", 220, 70, 80, 30,
                "fillColor=lightgreen");