У меня возникла проблема с использованием библиотеки JGraph(T). Мне нужно изменить представление выбора по умолчанию, например: фон по умолчанию имеет оранжевый цвет, если выбрана вершина, то была добавлена зеленая рамка, могу ли я изменить эту стратегию визуализации, чтобы изменить фон на Color.BLUE для выбранного элемента. Я пытаюсь выполнить следующий код:
GraphSelectionModel graphSelectionModel = new DefaultGraphSelectionModel(jGraph);
graphSelectionModel.setSelectionMode(GraphSelectionModel.MULTIPLE_GRAPH_SELECTION);
graphSelectionModel.addGraphSelectionListener(new GraphSelectionListener()
{
HashMap oldestCellsAndAttrs = new HashMap();
@Override
public void valueChanged(GraphSelectionEvent e)
{
jGraph.getModel().beginUpdate();
m_jgAdapter.edit(oldestCellsAndAttrs, null, null, null);
oldestCellsAndAttrs.clear();
Map cellAndAttrs = new HashMap();
for (Object obj : e.getCells())
{
DefaultGraphCell cell = (DefaultGraphCell) obj;
oldestCellsAndAttrs.put(cell, JGraphModelAdapter.createDefaultVertexAttributes());
Map attrs = cell.getAttributes();
GraphConstants.setBackground(attrs, Color.BLUE);
cellAndAttrs.put(cell, attrs);
}
m_jgAdapter.edit(cellAndAttrs, null, null, null);
jGraph.getModel().endUpdate();
}
});
fillGraph(tree, g);
layout(g, m_jgAdapter, jGraph);
setSize(3 * width / 4, height);
jGraph.setSelectionModel(graphSelectionModel);
Это изменяет bkg на тех же выбранных объектах, но не возвращается после невыбора. Существует ли решение по умолчанию для этой проблемы?