首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JGraph(T)图形元素选择自定义

JGraph(T)图形元素选择自定义
EN

Stack Overflow用户
提问于 2012-02-22 17:36:26
回答 1查看 1.5K关注 0票数 2

我在使用JGraph(T)库时遇到了一些问题。我需要更改默认选择视图,例如:默认背景为橙色,如果顶点被选中,则添加绿色边框,我是否可以更改此可视化策略以在所选元素上将背景更改为Color.BLUE。我尝试执行以下代码:

代码语言:javascript
复制
 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,但不会在未选择后返回。exists是否可以默认解决此问题?

EN

回答 1

Stack Overflow用户

发布于 2012-02-23 19:45:27

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

代码语言:javascript
复制
            @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);
        }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9392278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档