Мне нужно иметь функцию expand/collapse с моим mxGraph.JGraphX - развернуть/свернуть ячейку/вершину
Сценарий похож на то, что есть три вершины: 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();
}
}
Все примеры будут полезны.
У вас это работало? Я ищу такое решение с помощью библиотеки JavaScript. Любая помощь для этого будет полезна. –