Как поместить не редактируемые элементы в JPGraph - PullRequest
0 голосов
/ 17 января 2019

Я работаю над кодом, который показывает полный график и использует алгоритм Дейкстры, чтобы показать кратчайший путь.Но проблема в том, что он не просто визуализирует вещи, они все редактируемые и интерактивные.

Мне просто нужно визуализировать «график», а не: перемещать, редактировать, добавлять или создавать какие-либо взаимодействия с узлами и / или ребрами.

В этом простом 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".И я не хочу этого, я просто хочу визуализировать мой график, не взаимодействовать с ним.

EDIT : мне удалось сделать узел неподвижным, но я все еще могу создавать / взаимодействовать с нимего края.Это код, который я добавил:

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

1 Ответ

0 голосов
/ 18 января 2019

Попробуйте расширить mxGraph и переопределить метод isCellSelectable.

public class Graph extends mxGraph {

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

}
...