如何在JPGraph中放置不可编辑的元素

时间:2019-01-17 09:13:10

标签: java swing graph jframe jgraphx

我正在编写显示完整图形并使用Dijkstra算法的代码 显示最短的路径。但是问题是:它不只是将事物虚化,它们都是可编辑和可交互的。

我只需要可视化“图形”,而无需:移动,编辑,添加或与节点和/或边进行任何交互。

在这个简单的Jframe中,我一直在尝试消除这些交互。但我一直失败:

public class Actions extends JFrame {

private mxGraph graph;
private mxGraphComponent graphComponent;

public Actions() {
    super("JGraph - labyrinth");
    initGUI();
}

private void initGUI() {
    setSize(800,600);
    setLocationRelativeTo(null);

    graph = new mxGraph();
    graphComponent = new mxGraphComponent(graph);
    graphComponent.setPreferredSize(new Dimension(400, 400));
    getContentPane().add(graphComponent);

    Object parent = graph.getDefaultParent();

    graph.getModel().beginUpdate();

    graph.insertVertex(parent, null, "TEST", 30, 80, 100, 50);

    graph.getModel().endUpdate();
}

}

因此,此程序生成一个以“ TEST”字符串作为名称的节点。问题是:我可以与该单个节点进行交互,可以将其移动到任何地方,也可以根据需要从“ TEST”节点中获得许多新的优势。而且我不希望那样,我只是想对我的图表进行虚假化,不希望与之交互。

编辑:我设法使该节点不可移动,但仍可以创建其边缘或与之交互。这是我添加的代码:

   graph.setCellsLocked(true);
    graph.setVertexLabelsMovable(false);
    graph.setEdgeLabelsMovable(false);

1 个答案:

答案 0 :(得分:0)

尝试扩展mxGraph并覆盖isCellSelectable方法。

public class Graph extends mxGraph {

    @Override
    public boolean isCellSelectable(Object cell) {
           return false; 
    }

}