public JGraphXGraphPanel(NAR n) {
    super(new BorderLayout());

    NARGraph g = new NARGraph();
    g.add(n, IncludeEverything, new NARGraph.DefaultGraphizer(true, true, true, true, true));

    // create a visualization using JGraph, via an adapter
    jgxAdapter = new JGraphXAdapter(g) {};

    mxGraphComponent mxc = new mxGraphComponent(jgxAdapter) {};

    mxc.setAntiAlias(true);
    mxc.setConnectable(false);
    mxc.setExportEnabled(false);
    mxc.setFoldingEnabled(false);
    mxc.setPanning(true);
    mxc.setTextAntiAlias(true);

    add(new JScrollPane(mxc), BorderLayout.CENTER);

    mxFastOrganicLayout layout =
        // new mxCompactTreeLayout(jgxAdapter);
        new mxFastOrganicLayout(jgxAdapter);
    // new mxCircleLayout(jgxAdapter);
    layout.setForceConstant(150);
    layout.execute(jgxAdapter.getDefaultParent());

    /*
    mxOrganicLayout layout =
            //new mxCompactTreeLayout(jgxAdapter);
            new mxOrganicLayout(jgxAdapter);
            //new mxCircleLayout(jgxAdapter);
    layout.setEdgeLengthCostFactor(0.001);*/

    /*
    mxCompactTreeLayout layout =
            new mxCompactTreeLayout(jgxAdapter);

    layout.setLevelDistance(40);
    layout.setNodeDistance(50);
    layout.execute(jgxAdapter.getDefaultParent());*/

    jgxAdapter.setConnectableEdges(false);
    jgxAdapter.setCellsDisconnectable(false);
    jgxAdapter.setEdgeLabelsMovable(false);
    // jgxAdapter.setCellsLocked(true);
  }