Все, что вам нужно, это добавить еще один Transformer , который обеспечивает форму вершины при ее выборе Трансформер должен выбирать форму в зависимости от того, выбрана ли вершина или нет. Чтобы получить выбранное состояние, вам нужно получить объект PickedState из визуализации. Когда выбор будет изменен, у преобразователя будет запрошена форма, а вершины будут обновлены с возвращенной формой. Вот пример того, как это сделать:
final VisualizationViewer<Integer, String> vv = new
VisualizationViewer<Integer, String>(layout);
// Transformer for cycling the vertices between three unique shapes.
Transformer<Integer, Shape> vertexShape = new
Transformer<Integer, Shape>() {
private final Shape[] styles = {
new Ellipse2D.Double(-25, -10, 50, 20),
new Arc2D.Double(-15, -15, 30, 30, 30, 150, Arc2D.PIE) };
@Override
public Shape transform(Integer i) {
// Choose a shape according to the "picked" state.
PickedState<Integer> pickedState = vv.getPickedVertexState();
int shapeIndex = 0;
if (pickedState.isPicked(i)) {
shapeIndex = 1;
}
return styles[shapeIndex];
}
};
vv.getRenderContext().setVertexShapeTransformer(vertexShape);