我正在编写显示完整图形并使用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);
答案 0 :(得分:0)
尝试扩展mxGraph并覆盖isCellSelectable方法。
public class Graph extends mxGraph {
@Override
public boolean isCellSelectable(Object cell) {
return false;
}
}