0

グラフ アルゴリズムを実装し、そのためのインターフェイスを作成する必要があります。すべてのステップを持つフレーム。手作業で行います。私は Jung パッケージを使用していますが、そのグラフを木のように見せる方法がわかりません。2日間悩んでいます。

これが私の試みです:

DirectedSparseGraph<String, ?> g = new DirectedSparseGraph<String, Object>();

        g.addVertex("ROOT");
        g.addVertex("A");
        g.addVertex("B");
        g.addVertex("C");
        g.addVertex("D");
        g.addVertex("E");
         VisualizationImageServer vv = new VisualizationImageServer(new CircleLayout(g), new Dimension(350, 300));  


        JFrame frame = new JFrame("First step");

        frame.getContentPane().add(vv);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);

そこでは CircleLayout を使用しました。TreeLayout を使用する必要がありますが、Forest インターフェイスを実装する必要があり、方法がわかりません。私は優れたプログラマーではありません。:(

グラフを次のように表示します。

欲望の結果

4

2 に答える 2

0

ラベルと頂点のグラフ、トランスフォーマーを定義し、VisualizationViewer を追加する必要があります。

例:

public static void main(String[] args) {
    Graph<Integer, String> graph3 = new DelegateForest<>();

    graph3.addVertex(1);
    graph3.addVertex(2);
    graph3.addVertex(3);

    graph3.addEdge("RAD-A", 1, 2);
    graph3.addEdge("RAD-B", 1, 3);

    Layout<Integer, String> layout3 = new TreeLayout<>((Forest<Integer, String>) graph3);
    VisualizationViewer<Integer, String> vv3 = new VisualizationViewer<>(layout3);

    Transformer<String, String> transformer3 = new Transformer<String, String>() {

        @Override
        public String transform(String arg0) {
        return arg0;
        }
    };

    vv3.getRenderContext().setEdgeLabelTransformer(transformer3);
    Transformer<Integer, String> transformer = new Transformer<Integer, String>() {

        @Override
        public String transform(Integer arg0) {
        return arg0.toString();
        }

    };
    vv3.getRenderContext().setVertexLabelTransformer(transformer);

    transformer3 = new Transformer<String, String>() {
        @Override
        public String transform(String arg0) {
        return arg0;
        }
    };

    final DefaultModalGraphMouse<String, Number> graphMouse3 = new DefaultModalGraphMouse<>();
    vv3.setGraphMouse(graphMouse3);
    graphMouse3.setMode(ModalGraphMouse.Mode.PICKING);

    JFrame frame3 = new JFrame("Pas 3");
    frame3.getContentPane().add(vv3);
    frame3.pack();
    frame3.setSize(350, 300);
    frame3.setVisible(true);
    }
于 2016-10-22T17:31:33.230 に答える