Как поместить не редактируемые элементы в JPGraph
Я работаю над кодом, который показывает полный график и использует алгоритм Дейкстры, чтобы показать кратчайший путь. Но проблема в том, что он не просто визуализирует вещи, они все редактируемые и интерактивные.
Мне просто нужно визуализировать "график", а не: перемещать, редактировать, добавлять или создавать какие-либо взаимодействия с узлами и / или ребрами.
В этом простом 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 ответ
Попробуйте расширить mxGraph и переопределить метод isCellSelectable.
public class Graph extends mxGraph {
@Override
public boolean isCellSelectable(Object cell) {
return false;
}
}