gpt4 book ai didi

java - JGraph(T) 图元素选择定制

转载 作者:行者123 更新时间:2023-12-04 05:57:05 25 4
gpt4 key购买 nike

我在使用 JGraph(T) 库时遇到了一些问题。
我需要更改默认选择 View ,例如:默认背景是橙色,如果选择了顶点然后添加了绿色边框,我可以更改此可视化策略以将所选元素的背景更改为 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 在相同选定的 objs 上,但在未选择后不会返回。
是否存在此问题的默认解决方案?

最佳答案

我用愚蠢的代码解决了问题:

            @Override
public void valueChanged(GraphSelectionEvent e)
{
Object[] cells = e.getCells();
HashMap<DefaultGraphCell, AttributeMap> cellsAndAttrs = new HashMap<DefaultGraphCell, AttributeMap>();
for (Object c : cells)
{
DefaultGraphCell cell = (DefaultGraphCell) c;
AttributeMap cellAttrs = cell.getAttributes();
if (jGraph.isCellSelected(cell))
GraphConstants.setBackground(cellAttrs, SELECTED_COLOR);
else
GraphConstants.setBackground(cellAttrs, NON_SELECTED_COLOR);
cellsAndAttrs.put(cell, cellAttrs);
}
m_jgAdapter.edit(cellsAndAttrs, null, null, null);
}

关于java - JGraph(T) 图元素选择定制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9392278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com