Question

J'ai écrit une petite classe de visualiseur graphique:

    public void simpleGraph(SparseMultigraph<Vertex,SEdge> graph, String name) {

    Layout<Vertex, SEdge> layout = new ISOMLayout(graph);
    layout.setSize(new Dimension(800,800));
    BasicVisualizationServer<Vertex, SEdge> vv = new BasicVisualizationServer<Vertex, SEdge>(layout);
    vv.setPreferredSize(new Dimension(850,850)); //Sets the viewing area size

    JFrame frame = new JFrame(name);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(vv); 
    frame.pack();
    frame.setVisible(true);                 
}

Comment puis-je ajouter des étiquettes pour les sommets et les bords?Les valeurs sont stockées dans ma classe Vertex personnalisée.Puis-je itération sur tous les sommets dans la mise en page ou la basevisualizationerver et ajouter des étiquettes?

Merci pour votre aide!

Était-ce utile?

La solution

Vous devez appeler un transformateur d'étiquettes pour votre sommet / bord:

        vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());

C'est quelque chose que vous trouverez assez souvent dans les échantillons.Il utilise la méthode Tostring () de votre classe Vertex pour spécifier l'étiquette.

Un exemple légèrement plus impliqué:

        vv.getRenderContext().setEdgeLabelTransformer(new Transformer<MyEdge, String>() {
            public String transform(MyEdge e) {
                return (e.toString() + " " + e.getWeight() + "/" + e.getCapacity());
            }
        });

Vous n'avez pas besoin de itération sur les bords;L'EDGELABELTRANSFORMER OU VERTEXLABELTRANSFORMER émettra vos bords comme et lorsque leurs propriétés sont mises à jour et que la visualisationViewer les mettra à jour à la volée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top