Pergunta

Eu escrevi uma pequena classe de visualizador de gráfico:

    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);                 
}

Como posso adicionar rótulos para vértices e arestas?Os valores são armazenados em minha classe de vértice personalizada.Posso iterar todos os vértices no Layout ou BasicVisualizationServer e adicionar rótulos?

Obrigado pela ajuda!

Foi útil?

Solução

Você precisa chamar um transformador de rótulo para seu vértice/aresta:

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

Isso é algo que você encontrará com bastante frequência nas amostras.Ele usa o método toString() da sua classe de vértice para especificar o rótulo.

Um exemplo um pouco mais envolvente:

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

Você não precisa iterar nas bordas;o EdgeLabelTransformer ou VertexLabelTransformer rotulará suas arestas conforme e quando suas propriedades forem atualizadas, e o VisualizationViewer as atualizará instantaneamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top