有没有人知道您是否能够在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));
答案 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));
应该可以工作(如果你想选择顶点为红色)。我亲自测试过。这适用于选定的顶点。
在检查代码后,我必须相信我提供的链接能够正确地处理那些未被选中的顶点,但我实际上并没有尝试实现该链接。