I have coded the following code(some excerpts of the code) to display a node as rectangle but it is no working. It is just displaying a simple node.
Code excerpts:
...
ShapeAction nodeShape = new NodeShapeAction(treeNodes); // treeNodes is a datagroup representing the tree nodes
m_vis.putAction("nodeShape", nodeShape); // m_vis is referring the visualization object
m_vis.run(nodeShape);
....
/**
* Se开发者_运维问答t node shapes
*/
public static class NodeShapeAction extends ShapeAction {
public NodeShapeAction(String group) {
super(group);
add("type == 'APPLICATION'", Constants.SHAPE_RECTANGLE);
add("type == 'DATABASE'", Constants.SHAPE_STAR);
add("type == 'INTERFACE'", Constants.SHAPE_ELLIPSE);
}
} // end of inner class NodeShapeAction
I got the answer so I am answering it here.
In prefuse
, adding the Action
s (in our case ShapeAction
) to a visualization just sets the display properties of the VisualItem
s.
To display VisualItem
s that reflect those display properties, we need to set appropriate renderers
to the Visualization
.
ShapeRenderer m_nodeRenderer = new ShapeRenderer();
DefaultRendererFactory rf = new DefaultRendererFactory(m_nodeRenderer);
m_vis.setRendererFactory(rf);
精彩评论