JUNG Visualization

时间:2014-04-02 15:48:11

标签: jung

有没有人知道您是否能够在JUNG中为顶点标签设置文本的颜色。

我使用可视化查看器,似乎可以为其他所有内容设置颜色。

vv =  new VisualizationViewer<String,Integer>(treeLayout, new Dimension(410,557));
Transformer<String,Paint> vertexPaint = new Transformer<String,Paint>() {
   public Paint transform(String b) {
      return Color.orange;
   }
};

vv.setBackground(Color.white);
vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.Line());
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());
vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint);
//vv.getRenderContext().setVertexFontTransformer(vertexFont);


// add a listener for ToolTips
vv.setVertexToolTipTransformer(new ToStringLabeller());
vv.getRenderContext().setArrowFillPaintTransformer(new ConstantTransformer(Color.WHITE));

3 个答案:

答案 0 :(得分:1)

DefaultVertexLabelRenderer和DefaultEdgeLabelRenderer扩展了JLabel(它类似于单元格渲染器在JTable和JTree中的工作方式)。 默认情况下,它使用VisualizationViewer的前景色来绘制标签文本。

vv.setForegroundColor(Color.red);

会使您的所有标签变红。 这种方法比使所有标签解析HTML更便宜。

很抱歉,解决方案非常模糊。

此外,由于默认渲染器扩展了JLabel,因此html的使用与JLabel的使用相同。有很好的在线资源可以显示使用html和javax.swing的示例。缺少的是在JUNG中使用html和在javax.swing中使用html之间建立连接的文档。

答案 1 :(得分:0)

您可以在标签中使用HTML来指定颜色;这里有一个例子:https://stackoverflow.com/a/2017576/664856

答案 2 :(得分:0)

在你的情况下,

vv.getRenderContext().setVertexLabelRenderer(new DefaultVertexLabelRenderer(Color.RED));

应该可以工作(如果你想选择顶点为红色)。我亲自测试过。这适用于选定的顶点。

在检查代码后,我必须相信我提供的链接能够正确地处理那些未被选中的顶点,但我实际上并没有尝试实现该链接。